php - Mysql WHERE 子句或 php IF 条件?

标签 php mysql where-clause

在 mysql 中执行更新、插入或删除之前,我经常需要检查表列。我想知道这是否多余,因为 mysql WHERE 子句已经是一个条件。

示例:

  • 名为 private_messages 的数据库表存储私有(private)消息 用户。

  • 名为 read 的列的默认值为 0 并更新为 1 当用户已阅读消息时。

两种方法中哪一种更新表最有效和准确?

执行查询,返回read的值,并使用if条件:

if (read == 0) //if user did not read message
{
   UPDATE private_messages
   SET read = 1
   WHERE id = 48 //the unique, auto increment index
}

或者简单地在查询中添加一个 WHERE AND 子句:

UPDATE private_messages
SET read = 1
WHERE id = 48
AND read = 0

并使用 mysql_affected_rows() 确定行是否已更新。

编辑:另一种情况是,如果某列具有特定值,则删除一行。我应该使用 if 条件还是 where

最佳答案

我相信 MySQL 会检查您尝试插入的新值是否与现有值相同,并且只有在它们不同时才执行写入操作。所以不需要 IF 语句。

关于php - Mysql WHERE 子句或 php IF 条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6879157/

相关文章:

PostgreSQL 中的 SQL JOIN - WHERE 子句中的执行计划与 ON 子句中的执行计划不同

MySQL:显示或不显示取决于字段和引用计数比较

javascript - 动态更改帖子的内容(CMS)

javascript循环URL点击

php - "page not found nginx/1.4.4"错误在除主页之外的每个页面上

php - 如何使用更多内容正确添加标题位置?

php - 保护网站的最佳方法和途径

php - Laravel 5.3 对 sortBy 集合的分页

mysql - 从命令提示符使用批处理文件运行 sql 脚本

MySQL 找出 select 语句中使用了哪个 WHERE 子句