重复条目的句柄错误-PHP/MySQL
对于PHP/MySQL,处理重复条目错误的正确方法是什么 下面的代码不起作用,即使代码1062是重复条目的正确代码。我应该在这里使用DBO吗?不幸的是,我还不熟悉重复条目的句柄错误-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,它会工作的。这两
我只是在寻找一个简单的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这样的数据库抽象层,或者使用一个更软的开始。