如何检查MySQL数据库中是否存在值

Hat*_*tim 30 php mysql exists

假设我有这个表:

id | name | city
------------------
1  | n1   | c1
2  | n2   | c2
3  | n3   | c3
4  | n4   | c4
Run Code Online (Sandbox Code Playgroud)

我想检查c7变量下是否存在值city.

如果是的话,我会做点什么.
如果没有,我会做点别的.

Rei*_*Wit 64

首选方式,使用MySQLi扩展:

$mysqli = new mysqli(SERVER, DBUSER, DBPASS, DATABASE);
$result = $mysqli->query("SELECT id FROM mytable WHERE city = 'c7'");
if($result->num_rows == 0) {
     // row not found, do stuff...
} else {
    // do other stuff...
}
$mysqli->close();
Run Code Online (Sandbox Code Playgroud)

弃用:

$result = mysql_query("SELECT id FROM mytable WHERE city = 'c7'");
if(mysql_num_rows($result) == 0) {
     // row not found, do stuff...
} else {
    // do other stuff...
}
Run Code Online (Sandbox Code Playgroud)

  • 使用像 http://stackoverflow.com/a/1676573/204634 这样的 SQL 的 EXISTS 语句不是更好吗? (3认同)
  • @IanY。这取决于查询,但通常是的。看看这个:/sf/ask/31883351/ (2认同)

Bla*_*ter 16

完全匹配

"SELECT * FROM yourTable WHERE city = 'c7'"
Run Code Online (Sandbox Code Playgroud)

用于模式/通配符搜索

"SELECT * FROM yourTable WHERE city LIKE '%c7%'"
Run Code Online (Sandbox Code Playgroud)

当然,您可以更改'%c7%''%c7''c7%'根据您的搜索方式.要完全匹配,请使用第一个查询示例.

PHP

$result = mysql_query("SELECT * FROM yourTable WHERE city = 'c7'");
$matchFound = mysql_num_rows($result) > 0 ? 'yes' : 'no';
echo $matchFound;
Run Code Online (Sandbox Code Playgroud)

你也可以if在那里使用条件.

  • 使用id代替*(星号).应该使用`PDO`或`MYSQLi`. (2认同)