使用on duplicate key update将php多维数组插入mysql数据库

czq61nw1  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(357)

你好,我需要知道在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;
 }

我想知道语法我就能解决这个问题。提前感谢您的帮助,问候!

bihw5rsg

bihw5rsg1#

你不能有多个工作分配 ON DUPLICATE KEY UPDATE 条款。你能做的是使用 VALUES() 函数访问 UPDATE 条款。所以,只需更改这些行:

$sql.= " ON DUPLICATE KEY UPDATE ";
$sql.= implode(',',$values_update);

收件人:

$sql .= " ON DUPLICATE KEY UPDATE positive_number=VALUES(positive_number),
                                  negative_number=VALUES(negative_number)";

请参见插入。。。关于重复密钥更新语法

相关问题