如果我在同一个表上进行多个mysql查询,偶尔会跳过一些查询。
为什么?
例如:
<?php
mysql_query("UPDATE `tb` SET `field` = '' WHERE `Id` = '$something'");
mysql_query("UPDATE `tb` SET `field2` = '' WHERE `Id` = '$something'");
mysql_query("UPDATE `tb` SET `field3` = '0' WHERE `Id` = '$something'");
?>
有时候其中一个查询不会被执行?
为什么?
- 或者我的服务器不是一般的mysql有问题吗?
(显然我现在知道在同一个查询中更新同一个表,但在此之前我很困惑为什么会发生这种情况,有人可以解释一下吗?)
谢谢!
答案 0 :(得分:3)
如果要更新相同的行,则无需进行3次查询:
$q = "
UPDATE table
SET field = '',
field2 = '',
field3 = 0
WHERE Id = :id
";
$statement = $pdo->prepare( $q );
$statement->bindParam(':id', $something, PDO::PARAM_INT);
$statement->execute();
此外,您应该停止使用古老的mysql_*
函数。它们不再维护,弃用过程为already begun。
也许你应该避免使用10年以上的API,并在这十年中学到一些东西:PDO Tutorial for MySQL Developers。
答案 1 :(得分:0)
调试代码以查看查询是否失败:
$result = mysql_query("UPDATE `tb` SET `field` = '' WHERE `Id` = '$something'");
if (!$result) {
die('Invalid query: ' . mysql_error());
}
$result = mysql_query("UPDATE `tb` SET `field2` = '' WHERE `Id` = '$something'");
if (!$result) {
die('Invalid query: ' . mysql_error());
}
$result = mysql_query("UPDATE `tb` SET `field3` = '0' WHERE `Id` = '$something'");
if (!$result) {
die('Invalid query: ' . mysql_error());
}
答案 2 :(得分:0)
使用以下命令调试代码:
mysql_query("UPDATE `tb` SET `field` = '' WHERE `Id` = '$something'") or die(mysql_error());
mysql_query("UPDATE `tb` SET `field2` = '' WHERE `Id` = '$something'") or die(mysql_error());
mysql_query("UPDATE `tb` SET `field3` = '0' WHERE `Id` = '$something'") or die(mysql_error());
<强>更新强>
确保使用以下内容转义$something
$something = mysql_real_escape_string($something);