PHP中的多个MySQL查询,跳过

fae0ux8s  于 2023-05-05  发布在  PHP
关注(0)|答案(3)|浏览(133)

如果我在同一个表上执行多个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?
(显然我现在知道在同一个查询中更新同一个表,但在此之前我对为什么会发生这种情况感到困惑,有人能解释一下吗?)

jdgnovmf

jdgnovmf1#

如果要更新相同的行,则不需要进行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

tvokkenx

tvokkenx2#

调试代码以查看查询是否失败:

$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());
}
4sup72z8

4sup72z83#

使用以下命令调试代码:

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

相关问题