检查记录是否存在

use*_*394 11 php

在php.net上发现了这个以检查文件是否存在.

我想首先检查记录是否存在,然后进行更新,否则进行插入.

if(record exist) {
   update query}
else 
  { insert query}
Run Code Online (Sandbox Code Playgroud)

我知道如何更新或插入,但不知道如何检查记录是否存在.怎么做?

Dom*_*ger 26

如果您知道如何执行SQL SELECT,那么执行以下操作:

$result = mysql_query("SELECT * FROM table1 WHERE something");
$num_rows = mysql_num_rows($result);

if ($num_rows > 0) {
  // do something
}
else {
  // do something else
}
Run Code Online (Sandbox Code Playgroud)

更好的是,不要在PHP中这样做,使用INSERT ... ON DUPLICATE KEY UPDATE.


Ric*_*ams 6

您不需要在PHP中执行此操作,您可以直接在数据库的SQL查询中执行此操作(我假设您正在使用数据库进行记录,因为这就是您的问题所听到的内容,而我我会假设MySQL,因为它经常与PHP一起使用).

INSERT INTO ... ON DUPLICATE KEY UPDATE;
Run Code Online (Sandbox Code Playgroud)

如果它不存在则会插入一个新行,或者如果它已经存在则更新当前行,假设您的表具有主键.

有关详细信息,请参阅MySQL手册.

另一个选项是首先执行SELECT COUNT(1) FROM myTable WHERE ...查询,然后仅在结果为0时执行插入,否则执行更新.


pho*_*ogl 5

我会推荐 Dominic Rodger 的解决方案,但稍作改动以使其更快。您应该选择一个值而不是多于一行。

$result = mysql_query("SELECT key FROM table1 WHERE something LIMIT 1");
$num_rows = mysql_num_rows($result);

如果($num_rows > 0){
  // 做点什么
}
别的 {
  // 做其他事情
}

如果您的记录已经存在,您将得到一个结果,即超过 0 个结果,因此它可以工作,但可能来自您的 SQL-Server 的流量较少。


kar*_*m79 1

计算符合您条件的记录数?

select count(*) from foo where id = 5

if($count > 0) {
    // record exists
    ...
}
Run Code Online (Sandbox Code Playgroud)