使用MySQL和PHP使用单个查询更新多行

使用MySQL和PHP使用单个查询更新多行,php,mysql,database,insert,Php,Mysql,Database,Insert,我知道上面的代码不太正确,语法甚至错误。我只是粘贴了它,以显示我想要实现的想法。在WHERE语句中,data2如何知道每个$value2的值?更新使用不同的格式插入。对于更新,您的代码应该如下所示: <?php $userData = array(); while (anything to create a loop) { $value1 = $result1_from_loop; $value2 = $result2_from_loop; $value3 = $r

我知道上面的代码不太正确,语法甚至错误。我只是粘贴了它,以显示我想要实现的想法。在
WHERE
语句中,
data2
如何知道每个
$value2
的值?

更新使用不同的格式插入。对于更新,您的代码应该如下所示:

<?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);
?>
<?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);

尽管需要注意的是,不建议使用
mysql\u query
,因为它已被弃用(并将在以后的PHP版本中完全删除),而且您的代码容易受到SQL注入的攻击。至少我建议使用
mysqli\u query
,并研究使用准备好的语句。

您的更新语法不正确。是的,我知道,这并不正确。我只是把它放在那里,想知道我想要做什么。我甚至无法更正语法,因为我只知道如何使用此方法编写INSERT。您的代码容易受到攻击。您应该通过或驱动程序将准备好的语句与绑定参数一起使用。有一些很好的例子。@Fred如果你能忽略语法,我会给我一些线索,告诉我如何使用$userData[]中的一个值成功创建WHERE语句,我将不胜感激。下面是答案,但这并不能解决我的用例。我所要做的就是使用一个到MYSQL的连接更新多行,我尝试了$UPDATE.=“UPDATE statement”,在循环外我尝试了MYSQL\u query($UPDATE),但它不起作用。我对mysqli不太在行,只是想知道是否有一种方法可以在不插入/更新每个循环的每个记录的情况下使用MYSQL做到这一点。
$query = 'UPDATE users SET data1 = $userData[0], data2 = $userData[1], data3 = $userData[2] WHERE data2=$value2';