首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >已经存在的数据查询和绕过php mysql中的新条目

问已经存在的数据查询和绕过php mysql中的新条目
EN

Stack Overflow用户
提问于 2016-02-22 09:56:46
回答 3查看 170关注 0票数 2

我写了一个很长的程序。我只是在这里分享一些台词,以理解一个概念,这是我在这里的问题。我想检查以前的数据是否等于新输入的数据,如果是的话,那么应该出现一个错误,即数据已经输入,而不会再次存储在db中。下面的代码正在运行,但它重复数据。这不是很好。请你查查我哪里错了。谢谢

数据库名称预订:

代码语言:javascript
复制
Table Name data:
Name: John, Anjel, Smith, David
CNIC: 33, 46, 33, 91

/从html表单字段将数据存储在数据库中

代码语言:javascript
复制
<?php

$emp_name = addslashes($_POST['emp_name']);
$emp_cnic = addslashes($_POST['emp_cnic']);

?>

/选择在新提交的表单上复制(已存在)的CNIC

代码语言:javascript
复制
$already = mysql_query("SELECT CNIC FROM data WHERE CNIC = '$emp_cnic'");

//退出脚本,如果数据已经存在,则不存储它。

代码语言:javascript
复制
if($already){
die('Sorry! you are already registered. For any query, contact the  administrator. ');
EN

回答 3

Stack Overflow用户

发布于 2016-02-22 09:59:29

您还可以使用REPLACE mysql函数。

如果没有,只需使用COUNT()更改请求,并检查返回的结果是否大于0。

我还将高度建议您继续使用PDO,而不是仍然使用mysql_* (它已被废弃/删除)。

票数 0
EN

Stack Overflow用户

发布于 2016-02-22 10:03:29

你可以用mysql_num_rows

代码语言:javascript
复制
$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
}
票数 0
EN

Stack Overflow用户

发布于 2016-02-22 10:10:44

我在您的代码中看到的问题如下:

对于选择、显示、描述、解释和其他返回结果集的语句,mysql_query()在成功时返回资源,在错误时返回FALSE。 对于其他类型的SQL语句,INSERT、UPDATE、DELETE、DROP等,mysql_query()在成功时返回TRUE,错误时返回FALSE。

使用mysql_num_rows()时提到的错误是由于不成功的查询返回错误造成的。

您正在检查一个可能不是布尔值的值,以解决此使用:

代码语言:javascript
复制
if(!isset($already) OR mysql_num_rows($already) == 0){
  // die
}
else{
  // do stuff
}

此检查查询是否不成功或是否为空,因此始终会得到一个布尔值来检查结果集。

正如@Sakuto所指出的,使用不反对使用的函数非常重要,因此,与其使用mysql_query(),不如使用mysqli或PDO functions.For,更详细的信息请阅读this。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35550578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档