gpt4 book ai didi

php - 使用 PHP 在一个 SQL 查询中执行多个更新

转载 作者:行者123 更新时间:2023-11-29 04:50:08 24 4
gpt4 key购买 nike

所以我看了HERE ,但对于我正在做的事情的简单性来说,这似乎有点令人费解。我最多要处理一百个要更新的项目(大多数时候它会更像是 40 个)

目前我有这样的东西

$sql_update = '';
for($x = 0; $x < count($nodes); $x++){
if($nodes[$x]['loaded'] == 'true'){
if($nodes[$x]['changed'] == 'true'){
$sql_update .= 'UPDATE `genetic_decomp`.`tbl_node2view` SET `x` = "'.$nodes[$x]['location']['x'].'", `y` = "'.$nodes[$x]['location']['y'].'" WHERE `tbl_node2view`.`id` = "'.$nodes[$x]['id'].'";';
$sql_update .= 'UPDATE `genetic_decomp`.`tbl_nodes` SET `name` = "'.$nodes[$x]['name'].'", `type` = "'.$nodes[$x]['type'].'" WHERE `tbl_nodes`.`node_id` = "'.$nodes[$x]['id'].'";';
}
}
}
if($sql_update != ''){
$sql_result=mysql_query($sql_update,$connection) or exit("Sql Error".mysql_error());
}

现在,当我让它在 echo $sql_update 中打印出输出,然后将输出粘贴到 MAMP 中的 SQL 框中时,它工作正常..遍历并更新我想要两张 table

然而,当我运行上面的代码时,它会返回:

Sql Error
You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE `genetic_decomp`.`tbl_nodes` SET `name` = "lala", `type` = "p" WHERE `tbl' at line 1

我做错了什么?有更好的方法吗?

最佳答案

您的 SQL 在语法上看起来是正确的(除非我漏掉了一些简单的东西)。实际问题是因为您使用的是 mysql_query() - 支持多语句;因此,您不能使用此方法同时运行两个 UPDATE 查询。

来自手册:

mysql_query() sends a unique query (multiple queries are not supported)

同样,mysql_ 方法已被弃用,因此我(和社区)建议您更新代码以使用 mysqli_PDO方法 - 这两种方法都支持在单个语句中进行多个查询。

如果您需要坚持使用 mysql_query()(而不是重构整个应用程序),只需拆分查询并连续运行它们即可。

关于php - 使用 PHP 在一个 SQL 查询中执行多个更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12830956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com