php - 理解 php 死于 mysql_error

标签 php mysql forms

我在一个帖子上运行了 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 DzCyber​​DeV 是对的,如果您的第一个查询失败,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/

相关文章:

html - 如何让我的登陆页面对桌面/移动访问者有不同的规则?

javascript - jquery文件上传在一个帖子中发送所有文件

jquery - $( "#target").submit();不工作

php - 根据订购的商品设置总计,两种类型,有时一种类型不会订购。

php - 在 Codeigniter 中在哪里设置 session ?

mySQL随机查询执行时间较长

php - 如何使用一对多、双向 Doctrine ?

php - ajaxForm 无法 POST 文件

php - 如何使用php获取昨天的日期?

php - orderBy 在 Laravel 5 中不起作用