检测mySQL/PHP数据库中的数字是否唯一


Detect if a number is unique in a mySQL / PHP Database

我有一个mySQL表,它有一列如下:

ID
-----
0352
5432
4382
3520
30593
3992
295

我想检测一个特定的数字是否存在。

注意:此表不仅仅包含ID列。

例如

$num = 5432
if($num IS IN ID) {
 // code
} else {
 // code
}

使用计数查询

SELECT COUNT(1) FROM `table` WHERE `ID` = 5432;

然后您可以确定。。。

  • 0=不存在
  • 1=唯一
  • >1=不唯一

PDO示例

$stmt = $pdo->prepare('SELECT COUNT(1) FROM `table` WHERE `ID` = ?');
$stmt->bindParam(1, $num);
$num = 5432;
$stmt->execute();
$count = $stmt->fetchColumn();
switch ($count) {
    case 0 :
        // does not exist
        break;
    case 1 :
        // exists and unique
        break;
    default :
        // exists, not unique
}
$result = mysql_query("SELECT ID FROM table WHERE ID = '5432'");
$num_rows = mysql_num_rows($result);
if ($num_rows > 0) {
  // number is in the table
} else {
  // number is not in the table
}

Phil的答案很准确,如果你事先知道ID的话。如果您想提前从表中获得所有唯一ID的列表(假设这不是潜在的内存问题),您可以使用以下查询:

SELECT `ID`, COUNT(`ID`) AS `IS_UNIQUE` FROM `table` 
GROUP BY `ID` HAVING `IS_UNIQUE` = 1;

这将返回表中只出现一次的所有ID。

$result = mysqli_query("SELECT id FROM table WHERE id = {$num}");
if (mysql_num_rows($result)) {
    //already exists
} else {
    //does not exist
}

好吧,您总是可以执行对数据库的查询,如下所示:

SELECT COUNT(ID) AS cnt WHERE ID = [your id]

然后,回到php,在$row变量中获得查询结果后(例如),只需仔细检查

if ($row['cnt'] > 1)