当我尝试删除用户时,会显示此异常(错误)。
Error: the XML response that was returned from the server is invalid.
Received:
Cannot delete or update a parent row: a foreign key constraint fails
(`db_almacen`.`perfil_solicitud_material`, CONSTRAINT `perfil_solicitud_material_ibfk_1`
FOREIGN KEY (`id_usuario`) REFERENCES `usuario` (`id_usuario`))
它以这种方式显示,因为我有一个与我的用户ID相关的外键。 我想显示一个不同的消息,而不是那个。我怎么能这样做我检查php例外手册,但我没有找到一个例子,请帮助我。 我正在使用Mysql和PHP 我的PHP代码
$query = "DELETE FROM unidad_solicitante where id_unid_sol ='$cod';";
$result = mysql_query($query) or die(mysql_error());
谢谢
答案 0 :(得分:1)
不要使用mysql_ functions :http://pl1.php.net/mysql_query
看到红色框?它们被弃用,不安全,一般来说使用它们是个坏主意。
如果您希望PHP代码抛出实际Exception
,请使用PDO;如果您想生成安全代码,请使用PDO;如果你不想要SQL注入的黑暗恶魔(也适用于脚本小子)让你的网站失效,请使用......你知道:) mysql_函数是错误的,mysql_函数是邪恶的,mysql_函数正在唤醒黑暗势力,mysql_函数会偷走你孩子的冰淇淋,mysql_函数在参议院投票,mysql_函数不喂他们的狗; mysql_函数会在晚上困扰你; mysql_功能正在街头卖毒品;
您的查询代码的这个片段:='$cod';
似乎很脆弱,所以请阅读以下内容:
How can I prevent SQL injection in PHP?
使用PDO,您可以使用通常的try{} catch(...){}
块处理任何异常;
如果你不能使用PDO或者真的不想,你应该检查mysql_query()
是否返回true
,如果没有,那么你的错误信息将由mysql_error()
返回,所以它会是这样的:
$result = mysql_query(...);
if(!$result) {
$error = mysql_error();
// .. handle
}
答案 1 :(得分:0)
任何mysql错误都会触发or die(...)
,因为mysql_query()将返回一个普通的布尔值FALSE来表示失败。如果你想从die()中豁免某些错误条件,你必须明确地测试它们:
$result = mysql_query(...);
if ($result === FALSE) {
switch(mysql_errno()) {
case 1216: ... foreign key error ...
case xxx: ...
default:
die(mysql_error());
}
}
错误代码在此处定义:http://dev.mysql.com/doc/refman/5.6/en/error-messages-server.html
答案 2 :(得分:0)
负责显示数据库错误的代码如下:
die(mysql_error())
如果要显示自己的消息,请使用以下代码:
if(mysql_query($query)) {
echo 'success';
}
else {
echo 'error';
}