你好,我需要知道在mysql的内部语法插入一个在重复键上使用一次一堆数据。
我正在尝试,但没有达到预期的效果(这是一个实践的例子):
sql查询:在重复键更新时向用户(正数、负数、代码)插入值('23','-23','rewe12314'),('2','-2','t4234df')正数=23,负数=-23,正数=2,负数=-2
insert部分是正确的,并且我假设对于on duplicate key update的语法不正确。你能告诉我正确的语法吗?
这是我的密码:
$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;
}
我想知道语法我就能解决这个问题。提前感谢您的帮助,问候!
1条答案
按热度按时间bihw5rsg1#
你不能有多个工作分配
ON DUPLICATE KEY UPDATE
条款。你能做的是使用VALUES()
函数访问UPDATE
条款。所以,只需更改这些行:收件人:
请参见插入。。。关于重复密钥更新语法