【发布时间】:2017-11-10 15:56:45
【问题描述】:
<?php
$userData = array();
while (anything to create a loop) {
$value1 = $result1_from_loop;
$value2 = $result2_from_loop;
$value3 = $result3_from_loop;
$userData[] = '("'.$value1.'", "'.$value2.'", "'.$value3.'")';
} // THIS ENDS THE WHLE OR FOR LOOP
$query = 'INSERT INTO users (data1,data2,data3) VALUES' . implode(',', $userData);
mysql_query($query);
?>
上面的代码非常适合将多条记录插入到表users 中,如上所示,而且速度也非常快。
但是,我尝试在像以前一样循环之后使用相同的方法进行更新。我不知道如何实现这一点。
我想要这样的东西:
<?php
$userData = array();
while (Loop statement) {
$value1 = $result1_from_loop;
$value2 = $result2_from_loop;
$value3 = $result3_from_loop;
$userData[] = '("'.$value1.'", "'.$value2.'", "'.$value3.'")';
} // This ends the WHLE or FOR loop
$query = 'UPDATE users SET(data1,data2,data3) VALUES' . implode(',',$userData) WHERE data2=$value2
mysql_query($query);
我知道上面的代码并不接近正确,语法甚至是错误的。我只是粘贴它来展示我想要实现的想法。在WHERE 语句中data2 将如何知道每个$value2 的值?
【问题讨论】:
-
您的 UPDATE 语法不正确。
-
是的,我知道,这并不意味着正确。我只是把它放在那里以了解我想要做什么。我什至无法更正语法,因为我只知道如何用这种方法编写 INSERT。
-
您的代码容易受到SQL injection 攻击。您应该通过mysqli 或PDO 驱动程序使用带有绑定参数的准备好的语句。 This post 有一些很好的例子。
-
@Fred 如果你可以忽略语法,我会告诉我如何使用 $userData[] 中的一个值成功创建 WHERE 语句,我将不胜感激。
-
你在下面有答案