我在一个帖子上运行了 4 个查询。我注意到,如果第一个查询没有工作要做,则并非所有查询都有效。
这是我的问题
mysql_query("UPDATE invoice SET company='$company' WHERE company='$oldcompanyname'") or die(mysql_error());
mysql_query("UPDATE bill SET customer='$company' WHERE customer='$oldcompanyname'") or die(mysql_error());
mysql_query("UPDATE project SET customer='$company' WHERE customer='$oldcompanyname'") or die(mysql_error());
mysql_query("INSERT INTO activity_log (item, date) VALUES ('Customer Editted', NOW()) ") or die(mysql_error());
举个例子,第一个运行正常。但是第二个没有工作要做,因为该字段中的数据不存在。第三个和第四个应该运行,但它们没有运行。
我一直习惯于在查询后附加“or die(mysql_error());”但我现在认为这不是最好的选择。但是,即使中间的那个没有工作要做,剩下的查询不应该运行吗?
如果所有 4 个都有工作要做,那么它工作正常。
最佳答案
@HamZa DzCyberDeV 是对的,如果您的第一个查询失败,die()
调用将停止执行脚本的其余部分,就像 exit()
一样.在仅当另一个查询完成时才需要运行查询的情况下,最好删除 die 语句并使用 if/else。
$result = mysql_query("UPDATE invoice SET company='$company' WHERE company='$oldcompanyname'");
if ($result !== false) {
// do something here or execute the next query
}
此外,不要在新代码中使用 mysql_* 函数 Why shouldn't I use mysql_* functions in PHP? .它们不再维护并正式弃用 https://wiki.php.net/rfc/mysql_deprecation .了解准备好的语句 https://en.wikipedia.org/wiki/Prepared_statement相反,并使用 PDO http://php.net/pdo或 MySQLi http://php.net/mysqli .
关于php - 理解 php 死于 mysql_error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16408942/