Mysql多个PHP查询,跳过

时间:2012-03-26 12:29:14

标签: php mysql

如果我在同一个表上进行多个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有问题吗?

(显然我现在知道在同一个查询中更新同一个表,但在此之前我很困惑为什么会发生这种情况,有人可以解释一下吗?)

谢谢!

3 个答案:

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