已经存在数据查询并绕过php mysql

时间:2016-02-22 09:56:47

标签: php html mysql web

我写了一个很长的程序。我只是在这里分享一些线来理解这个问题,这是我的问题。我想检查先前的数据是否等于新输入的数据,如果是,则应该发生数据已经输入的错误,而不再在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. ');

3 个答案:

答案 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指出的那样,使用未弃用的函数非常重要,因此您应该使用mysqliPDO函数而不是使用mysql_query()。有关详细信息,请阅读this。< / p>

相关问题