Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.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或SQL进行错误检查_Php_Mysql_Sql_Web_Integrity - Fatal编程技术网

使用PHP或SQL进行错误检查

使用PHP或SQL进行错误检查,php,mysql,sql,web,integrity,Php,Mysql,Sql,Web,Integrity,请给出下表: CREATE TABLE User ( Email VARCHAR(256) PRIMARY KEY, Name VARCHAR(256), ); 我试图在表中插入日期。 为了检查重复,我应该使用SQL从用户那里选择email=$email并检查返回的行数或行数是否为1,如果为1,我应该使用php打印错误消息吗 或 我是否应该尝试将数据插入表中,并使用以下命令打印错误 mysql_query('INSERT INTO ...'); if (mysql_errno() == 106

请给出下表:

CREATE TABLE User (
Email VARCHAR(256) PRIMARY KEY,
Name VARCHAR(256),
);
我试图在表中插入日期。 为了检查重复,我应该使用SQL从用户那里选择email=$email并检查返回的行数或行数是否为1,如果为1,我应该使用php打印错误消息吗 或 我是否应该尝试将数据插入表中,并使用以下命令打印错误

mysql_query('INSERT INTO ...');
if (mysql_errno() == 1062) {
    print 'no way!';
}

哪种方法更好?

您可以进行如下查询:

$sql = "INSERT INTO `table` VALUES ('$email','$Name')"
      ." WHERE NOT EXISTS (SELECT * FROM `table` WHERE `email`='$email')";

mysql_query($sql) or die("There's a duplicate.");`

通常,最好让DBMS进行检查,因为功能已经存在并经过测试。您只需要处理错误消息


如果您坚持使用自己的代码进行检查,请准备好进行数小时的头脑风暴(考虑到问题的复杂性)。

您应该使用mysql\u错误消息您好,先生,感谢您提供的提示。但是如果表现在由Email VARCHAR(256)主键组成,Name VARCHAR(256)NOT NULL,如果Email重复且Name为NULL,mysql将返回最后一个已知错误,如何打印这两条错误消息?您可以打印一条常规错误消息,也可以打印最后一条错误消息,让用户一步一步地修复输入。一个好的PHP/MySQL应用程序在所有级别上应用数据验证和验证-在验证POST数据(或任何源)时,您应该选择空数据值在您将变量作为查询的一部分传递之前。但是这是否违背了在我的表中不为NULL的目的呢?您好,先生,谢谢您的sql代码。我真的没有想到这种方法。-1对于示例中die()的使用:退出脚本几乎是不可接受的。数据库出错的原因还有很多,不仅仅是重复的记录。