gpt4 book ai didi

php - 对数组使用重复键更新

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

我对 MYSQL 比较陌生,并且在结合我读过的想法时遇到困难。我有一个根据查询生成的表单。我希望能够根据当前是否存在匹配的行来插入或更新。我有以下适用于插入的代码,但我正在努力处理“重复更新”部分,我不断收到一条消息,说我的语法中有错误或意外的 ON,具体取决于我放置 ' 的方式。

 require_once("connect_db.php"); 

$row_data = array();
foreach($_POST['attendancerecordid'] as $row=>$attendancerecordid) {
$attendancerecordid=mysqli_real_escape_string($dbc,$attendancerecordid);
$employeeid=mysqli_real_escape_string($dbc,($_POST['employeeid'][$row]));
$linemanagerid=mysqli_real_escape_string($dbc,($_POST['linemanagerid'][$row]));
$abscencecode=mysqli_real_escape_string($dbc,($_POST['abscencecode'][$row]));
$date=mysqli_real_escape_string($dbc,($_POST['date'][$row]));



$row_data[] = "('$attendancerecordid', '$employeeid', '$linemanagerid', '$abscencecode', '$date')";
}
if (!empty($row_data)) {
$sql = 'INSERT INTO attendance (attendancerecord, employeeid, linemanagerid, abscencecode, date) VALUES '.implode(',', $row_data)
ON DUPLICATE KEY UPDATE abscencecode = $row_data[abscencecode];
echo $sql;
$result = mysqli_query ($dbc, $sql) or die(mysqli_error ($dbc));
}

各种 echo 语句显示正确的数据正在通过,并且在添加 ON DUPLICATE 语句之前我的 select 语句符合预期。

最佳答案

您需要修复通过字符串连接构造 sql 语句的方式。当您创建一条 sql 语句时,回显它并在您最喜欢的 mysql 管理器应用程序中运行它进行测试。

 $sql = 'INSERT INTO attendance (attendancerecord, employeeid, linemanagerid, abscencecode, date) VALUES ('.implode(',', $row_data).') ON DUPLICATE KEY UPDATE abscencecode = 1'; //1 is a fixed value yiu choose

更新:刚刚注意到您的 $row_data 数组没有命名键,它只包含整个新行值作为字符串。由于您进行批量插入(在 1 个语句中插入多行),因此您必须在 on重复键子句中提供单个缺席代码,或者必须在单独的插入中执行每一行以获取循环中每行的缺席代码.

关于php - 对数组使用重复键更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33096844/

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