Php 在MySQL数据库中检查唯一标识时出现问题
我试图验证MySQL列中的字符串是否唯一。以下是代码示例:Php 在MySQL数据库中检查唯一标识时出现问题,php,mysql,string,unique,identifier,Php,Mysql,String,Unique,Identifier,我试图验证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_n
<?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);
?>
通常不明智的做法是将函数调用按现有方式链接起来。尤其是数据库调用。mysql_*()函数期望传入某些内容,如语句句柄。但如果出现问题,它们可以返回布尔值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”用于DB。这是正确的吗?否则,mysql_select_db()将失败,任何查询也将失败,因为未选择任何数据库。是的,这是我的编辑错误。我做了mysql\u select\u db(“db\u name”,$con);