我写了一个很长的程序。我只是在这里分享一些线来理解这个问题,这是我的问题。我想检查先前的数据是否等于新输入的数据,如果是,则应该发生数据已经输入的错误,而不再在db中存储。以下代码正在运行,但它会复制数据。这不太好。请你检查一下我错了。感谢
数据库名称预订:
Table Name data:
Name: John, Anjel, Smith, David
CNIC: 33, 46, 33, 91
////将数据存储在html表单字段的数据库中
<?php
$emp_name = addslashes($_POST['emp_name']);
$emp_cnic = addslashes($_POST['emp_cnic']);
?>
////选择新表单提交上重复(已存在)的CNIC
$already = mysql_query("SELECT CNIC FROM data WHERE CNIC = '$emp_cnic'");
//如果数据已经存在,则不存储数据。
if($already){
die('Sorry! you are already registered. For any query, contact the administrator. ');
答案 0 :(得分:0)
你也可以REPLACE
mysql函数。
如果没有,只需用COUNT()更改您的请求,并检查返回的结果是否大于0.
我还强烈建议你继续使用PDO而不是使用mysql_ *(已弃用/删除)
答案 1 :(得分:0)
您可以使用mysql_num_rows
$already = mysql_query("SELECT CNIC FROM data WHERE CNIC = '$emp_cnic'");
$record_count = mysql_num_rows($already );
// $record_count > 0 means data already exist
if( $record_count > 0 ) {
// Show error
} else {
// Save data
}
答案 2 :(得分:0)
我在您的代码中看到的问题如下:
对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他语句返回 resultset,mysql_query()在成功时返回资源,或者返回FALSE 错误。
对于其他类型的SQL语句,INSERT,UPDATE,DELETE,DROP等, mysql_query()成功时返回TRUE,错误时返回FALSE。
使用mysql_num_rows()
时提到的错误是由于查询失败的错误返回引起的。
您正在检查可能不是布尔值的值,以解决此问题:
if(!isset($already) OR mysql_num_rows($already) == 0){
// die
}
else{
// do stuff
}
检查查询是否不成功或是否为空,因此您总是得到一个布尔值来检查结果集。
正如@Sakuto指出的那样,使用未弃用的函数非常重要,因此您应该使用mysqli
或PDO
函数而不是使用mysql_query()。有关详细信息,请阅读this。< / p>