使用重复密钥更新将PHP多维数组插入Mysql数据库
您好,我需要知道mysql的内部语法,以便使用on replicate key一次插入一组数据 我正在尝试,但没有达到预期的效果(这是一个实践示例): SQL查询:在重复键上向用户(正数、负数、代码)插入值('23'、'-23'、'rewe12314')、('2'、'-2'、't4234df'),更新正数=23,负数=-23,正数=2,负数=-2 insert部分是正确的,我假设我对on duplicate key update的语法不正确。你能告诉我正确的语法吗 这是我的密码:使用重复密钥更新将PHP多维数组插入Mysql数据库,php,mysql,Php,Mysql,您好,我需要知道mysql的内部语法,以便使用on replicate key一次插入一组数据 我正在尝试,但没有达到预期的效果(这是一个实践示例): SQL查询:在重复键上向用户(正数、负数、代码)插入值('23'、'-23'、'rewe12314')、('2'、'-2'、't4234df'),更新正数=23,负数=-23,正数=2,负数=-2 insert部分是正确的,我假设我对on duplicate key update的语法不正确。你能告诉我正确的语法吗 这是我的密码: $users
$users = array(
array(
'positive_number' => '23',
'negative_number' => '-23',
'code' => 'rewe12314',
),
array(
'positive_number' => '2',
'negative_number' => '-2',
'code' => 't4234df',
)
);
echo "<br>";
$total_rows = count($users);
$values = array();
for ($i = 0; $i < $total_rows; $i++) {
$POSITIVE_NUMBER = $users[$i]['positive_number'];
$NEGATIVE_NUMBER = $users[$i]['negative_number'];
$CODE = $users[$i]['code'];
$values[] = "('$POSITIVE_NUMBER', '$NEGATIVE_NUMBER', '$CODE')";
$values_update[] = "positive_number=".$POSITIVE_NUMBER.",
negative_number=".$NEGATIVE_NUMBER;
}
$sql = "INSERT INTO users (positive_number, negative_number, code)
VALUES";
$sql.= implode(',',$values);
$sql.= " ON DUPLICATE KEY UPDATE ";
$sql.= implode(',',$values_update);
echo "SQL query: " . $sql;
if (!$conn->query($sql) === TRUE) {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$users=array(
排列(
“正数”=>“23”,
“负数”=>“-23”,
“代码”=>“rewe12314”,
),
排列(
“正数”=>“2”,
“负数”=>“-2”,
“代码”=>“t4234df”,
)
);
回声“
”;
$total_rows=计数($users);
$values=array();
对于($i=0;$i<$total_行;$i++){
$POSITIVE_NUMBER=$users[$i]['POSITIVE_NUMBER'];
$NEGATIVE_NUMBER=$users[$i]['NEGATIVE_NUMBER'];
$CODE=$users[$i]['CODE'];
$values[]=“(“$POSITIVE_NUMBER”、“$NEGATIVE_NUMBER”、“$CODE”)”;
$values\u update[]=“正数=”.$positive\u number.”,
负数=“.$负数”;
}
$sql=“插入用户(正数、负数、代码)
价值观”;
$sql.=内爆(“,”,$values);
$sql.=“在重复密钥更新时”;
$sql.=内爆(“,”,$values\u update);
echo“SQL查询:”$sql;
if(!$conn->query($sql)==TRUE){
echo“Error:”.$sql.“
”$conn->Error;
}
我认为了解语法可以解决这个问题。
提前感谢您的帮助,问候 在
ON DUPLICATE KEY UPDATE
子句中不能有多个赋值。您可以改为使用函数访问UPDATE
子句中特定插入的值。因此,只需更改这些行:
$sql.= " ON DUPLICATE KEY UPDATE ";
$sql.= implode(',',$values_update);
致:
请参见我看不出您在哪里执行了查询以及使用哪个api连接。我所看到的只是你在附和。因此,很难给您提供正确的错误处理参考。我将该部分添加到代码片段中,但没有抛出错误。非常感谢,这正是我所需要的。问候语!
$sql .= " ON DUPLICATE KEY UPDATE positive_number=VALUES(positive_number),
negative_number=VALUES(negative_number)";