检查MySQL数据库中的唯一身份时出现问题

| 我试图验证一个字符串在MySQL列中是唯一的。这是代码示例:
<?php
$con = mysql_connect(\"hostname\", \"username\", \"password\");
if (!$con)
{
die(\'Could not connect: \' . mysql_error());
}

mysql_select_db(\"table_name\", $con);


if (!mysql_num_rows(mysql_query(\"SELECT * FROM table_name WHERE unique_string = \'123456\' 
LIMIT 1\"))) {

die(\'This string is not unique.\');
}
mysql_close($con);
?>
在此代码示例中,我以输入值123456为例。本示例假定字符串123456已存在于unique_string列中。因此,它应该死掉并返回语句“此字符串不是唯一的。”可悲的是,它不是。你知道为什么吗?有没有更好的方法来完成此检查?     
已邀请:
        通常,将函数调用链接在一起是不明智的。特别是在数据库调用中。 mysql _ *()函数希望传递某些内容,例如语句句柄。但是,如果出现问题,它们可以返回布尔值FALSE而不是句柄。该FALSE被传递而不是句柄,然后一切都坏了。 一般规则是始终假设您的查询将以某种方式失败,并进行防御性编程:
$sql = \"SELECT ....\";
$result = mysql_query($sql) or die(mysql_error());
$rows = mysql_num_rows($result);
if ($row !== 0) then
    die(\"Not unique\");
}
除此之外,您的查询语句在语法上确实是正确的。为什么不看看它返回了什么?
$row = mysql_fetch_assoc($result);
var_dump($row);
并确切地看到要匹配的内容。也许您在表中没有该值,却误以为它在那里。     
        
Select count(*) from yourtable where mycolumn = \'unique string\'
现在,您应该测试是否返回1     
        您也为数据库使用\“ table_name \”。它是否正确?如果没有,则mysql_select_db()失败,并且任何查询都会失败,因为未选择任何数据库。     

要回复问题请先登录注册