正在查询数据库中的重复条目


Querying database for duplicate entries

在添加新的邮政编码之前,尝试查看邮政编码是否已经存在:

对于一个空的查询,我得到的答案是"否"对于搜索字段中的anythin,即使邮政编码不存在,我也会得到肯定。

$search=$_POST['search'];
$result = mysql_query("SELECT zipcodes FROM zipcodes WHERE zipcodes='$search'");
if ($result = $search) {
$search = "yes";
}else{
$search = "no";
}

有什么想法吗?非常感谢。

您在这行使用了一个等号:

if ($result = $search)

它将$result分配给$search,而不是比较相等,然后总是返回true。使用==

此外,请听取吴宇森关于使用COUNTmysql_num_rows:的建议

$search = $_POST['search'];
$result = mysql_query("SELECT zipcodes FROM zipcodes WHERE zipcodes='$search'");
if (mysql_num_rows($result) > 0) {
    $search = "yes";
}else{
    $search = "no";
}

尝试使用COUNT

SELECT COUNT(*) FROM `zipcodes` WHERE` zipcodes = 'value'

如果邮政编码不存在,它将返回0。

在PHP中,您也可以执行if (mysql_num_rows($result) > 0)

echo (mysql_errno($db_object) == 1062) ? 'duplicate' : 'unique';

尝试更改此行

$result = mysql_query("SELECT zipcodes FROM zipcodes WHERE zipcodes='$search'");

$result = mysql_query("SELECT zipcodes FROM zipcodes WHERE zipcodes='"$search'"");

$search变量不会在单引号中打印其值

使用

$search=$_POST['search'];
$result = mysql_query("SELECT zipcodes FROM zipcodes WHERE zipcodes='$search'");
if (mysql_num_rows($result) > 0) {
$search = "yes";
}else{
$search = "no";
}