gpt4 book ai didi

javascript - 检查MySQL数据是否已存在,如果不存在则INSERT。 [PHP+jQuery Ajax]

转载 作者:行者123 更新时间:2023-11-29 07:26:33 25 4
gpt4 key购买 nike

我在创建将值插入 MySQL 数据库的 PHP 代码时遇到问题,但前提是这些值尚不存在。

我使用 $.ajax 类型 POST 将数组从 javascript 发送到 PHP 文件。

我是否需要额外的“SELECT”查询来检查值是否已存在?

PHP 文件(有效,插入值):

<?php
SESSION_START();
include('config.php');
if(isset($_POST['predictedMatches'])&&$_SESSION['userid']){
$predictedMatches=$_POST['predictedMatches'];
$userid=$_SESSION['userid'];
}else die("ERROR");
$sql="";
foreach($predictedMatches as $predictedMatch){
$sql.="INSERT INTO predictions(result,userFK,matchFK,tournamentFK) VALUES('".$predictedMatch['result']."','".$userid."','".$predictedMatch['id']."','".$predictedMatch['tourid']."');";
}
if($conn->multi_query($sql) === TRUE){
echo "OK";
}else{
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>

最佳答案

使用重复 key 更新功能。如果主键存在,则不会插入。但是您必须更新一些值,因此请使用没有索引或最少索引的列(在您的情况下可能会导致结果)。您的主键必须由三个 FK 组成:

ALTER TABLE `predictions` ADD PRIMARY KEY( `userFK`, `matchFK`, `tournamentFK`);

PHP代码,只是SQL语句(我是Java Guy,所以我尽力了)

$sql.="INSERT INTO predictions (result, userFK, matchFK, tournamentFK) "
."VALUES('".$predictedMatch['result'] ."','".$userid."','"
.$predictedMatch['id']."','".$predictedMatch['tourid']."') "
."ON DUPLICATE KEY UPDATE result = result ;";

要知道查询是否已插入,您必须查看受影响的行数:

  • 1 行 - 插入
  • 2 行 - 更新

查看查询后的 $conn->affected_rows

性能

INSERT ... ON DUPLICATE KEY UPDATE 绝对比 SELECTINSERT 更快,但比 INSERT< 慢 只是所需的数据集。更新是在数据库中完成的,即使是相同的值。不幸的是,没有 ON DUPLICATE KEY UPDATE IGNORE 。如果您有大量插入,这将导致更新,那么最好使用缓存,在数组中查找值并在插入之前与数组进行比较。仅使用ON DUPLICATE KEY UPDATE作为后备。

关于javascript - 检查MySQL数据是否已存在,如果不存在则INSERT。 [PHP+jQuery Ajax],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34356091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com