Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php和Mysql-检测重复条目_Php_Mysql - Fatal编程技术网

Php和Mysql-检测重复条目

Php和Mysql-检测重复条目,php,mysql,Php,Mysql,我有一个MySql查询,我正在尝试检查我的PHP代码中是否有重复的条目,我正在尝试这样做: if(!$result) { $error_message = mysql_error(); $pos = strpos ( $error_message , 'Duplicate entry' ); if($pos === false) { ... Do some error reporting... 但是行$erro

我有一个MySql查询,我正在尝试检查我的PHP代码中是否有重复的条目,我正在尝试这样做:

if(!$result)
{
    $error_message = mysql_error();

        $pos = strpos ( $error_message ,  'Duplicate entry' );

        if($pos === false)
        {
           ... Do some error reporting...

但是行$error_message=mysql_error();似乎要打破它。有人知道为什么会发生这种情况,以及如何正确地检测重复的错误消息,因为这对我来说是一种攻击吗?

您可以使用mysql\u errno或mysqli\u errno,并查找错误号1062,这是重复条目的错误号。

您应该查看MySQL的行为,它允许您告诉MySQL您正在执行一个可能存在重复项的插入,如果是,请不要执行任何操作。

在编写太多代码之前警告您:
MySQL\u xxx()
此处使用的函数被视为已过时,不建议使用。PHP手册强烈建议使用'mysqli_xxx()函数(非常类似,但更新,支持更多功能)或PDO库(非常不同,但功能更强大)。@spudley谢谢,我没有意识到这一点!所以我应该把我所有的函数都改成mysquli而不是mysql?这并不像全部添加
I
那么简单,但它离基本层不远。此外,在进行切换时,值得一提的是,新库中的一个主要功能是“参数化查询”,这允许您在不必转义所有字符串的情况下确保查询的安全性。这不是强制性的,但如果您可以同时转换为使用它,这将大大提高代码质量。要检查条目是否重复,请不要尝试解析数据库错误的文本。或者,获取错误号,这是一种更好的测试问题的方法,或者先在锁定的表上执行
选择
,然后在事务中执行
插入