Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.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

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_Error Handling_Try Catch - Fatal编程技术网

重复条目的句柄错误-PHP/MySQL

重复条目的句柄错误-PHP/MySQL,php,mysql,error-handling,try-catch,Php,Mysql,Error Handling,Try Catch,对于PHP/MySQL,处理重复条目错误的正确方法是什么 下面的代码不起作用,即使代码1062是重复条目的正确代码。我应该在这里使用DBO吗?不幸的是,我还不熟悉 我只是在寻找一个简单的try-catch或任何可以让我打印一条消息给输入了重复项的用户,他必须为主键输入另一个值 谢谢mysql\u query()不会抛出异常(并且只能捕获异常)mysqli和PDO可以,如果您启用它的话mysql也非常过时(已经过时很多年了),所以在启用异常模式的情况下使用PDO或MySQLi,它会工作的。这两

对于PHP/MySQL,处理重复条目错误的正确方法是什么

下面的代码不起作用,即使代码1062是重复条目的正确代码。我应该在这里使用DBO吗?不幸的是,我还不熟悉


我只是在寻找一个简单的try-catch或任何可以让我打印一条消息给输入了重复项的用户,他必须为主键输入另一个值

谢谢

mysql\u query()
不会抛出异常(并且只能捕获异常)
mysqli
和PDO可以,如果您启用它的话
mysql也非常过时(已经过时很多年了),所以在启用异常模式的情况下使用PDO或MySQLi,它会工作的。这两个API都支持预处理语句,所以如果您开始在查询中输入变量,也应该使用预处理语句

对于MySQLi,您需要
MySQLi_报告(MySQLi_报告错误| MySQLi_报告严格)在连接之前,对于PDO,您需要
$PDO->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常)

MySQLi示例

mysqli_报告(mysqli_报告错误| mysqli_报告严格);
$mysqli=newmysqli($hostname、$username、$password、$databasename);
$mysqli->set_字符集(“utf8”);
试一试{
$mysqli->query(“插入到TP2\u组织中
价值观('A0A0','Equiterre',1',/photos/Equiterre_logo.png','Steve Guilbault','steve@equiterre.org')");
}catch(mysqli\u sql\u异常$e){
如果($e->getCode()==1062){
//重复用户
}
}
PDO示例

$pdo=newpdo(“mysql:host=$hostname;dbname=$databasename;charset=utf8”,$username,$password);
$pdo->setAttribute(pdo::ATTR_ERRMODE,pdo::ERRMODE_EXCEPTION);//启用异常模式
试一试{
$pdo->query(“插入到TP2_组织中
价值观('A0A0','Equiterre',1',/photos/Equiterre_logo.png','Steve Guilbault','steve@equiterre.org')");
}捕获(PDO$e){
如果($e->getCode()==1062){
//重复用户
}
}

当您开始在查询中引入变量时,请考虑使用一个准备好的语句()。

谢谢,但我不确定如何使用以下行:$pdo=new-pdo(“mysql:host=$hostname;dbname=$databasename;charset=utf8”,$username,$password);-我在哪里可以找到主机名和/或数据库名,老实说,我使用的是虚拟机,我现在有点困惑。这会创建连接,类似于您今天使用的
mysql\u connect()
。您应该使用
mysql\uuu
函数删除所有实例,并改用PDO或MySQLi。在虚拟机上,您通常从
localhost
root
开始,但您需要锁定它,并绝对确保远程用户无法连接,特别是在您的root帐户没有密码的情况下。好的,我需要获得mysql扩展吗?它显示了致命错误:调用未定义的函数mysqli_report()是的,您需要mysql和mysqli/PDO扩展。警告:不要使用在PHP7中删除的过时接口。替换类和指南类有助于解释最佳实践。这里没有参数,这在代码中有严重的错误。转义任何和所有用户数据,特别是从
$\u POST
$\u GET
转义。此代码不可能工作。我不知道你在哪里找到的,但我希望你用来学习如何在PHP中使用MySQL的资源太旧了,不值得信任
mysql\u query
不再可用,而且,您不能像那样插入数据。在这一切变得有意义之前,您需要先学习一个基本的SQL入门,或者使用像e这样的数据库抽象层,或者使用一个更软的开始。