-2

当我尝试删除用户时显示此异常(错误)。

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()); 

谢谢你

4

3 回答 3

1

不要使用 mysql_ 函数http ://pl1.php.net/mysql_query

看到红框了吗?它们已被弃用,不安全,通常使用它们是个坏主意。

如果你想让 PHP 代码抛出实际Exception的,那么使用PDO;如果要生成安全代码,请使用PDO;如果您不希望 SQL 注入的黑暗恶魔(也适用于脚本小子)让您的网站崩溃,请使用...您知道的 :) mysql_ 函数是错误的,mysql_ 函数是邪恶的,mysql_ 函数正在唤醒黑暗势力, mysql_ 函数会偷你孩子的冰淇淋, mysql_ 函数在参议院投票, mysql_ 函数不喂他们的狗;mysql_ 函数会在晚上困扰你;mysql_函数是街头贩毒;

您的查询代码的这个片段:='$cod';似乎易受攻击,所以请阅读: 如何防止 PHP 中的 SQL 注入?

try{} catch(...){}使用 PDO,您可以使用通常的块处理任何异常;

如果你不能使用 PDO 或者真的不想使用,你应该检查是否mysql_query()返回true,如果没有,那么你的错误信息将被返回mysql_error(),所以它会是这样的:

$result = mysql_query(...);
if(!$result) {
    $error = mysql_error();
    // .. handle
}
于 2013-09-27T19:57:51.133 回答
0

负责显示数据库错误的代码在这里:

die(mysql_error())
  • die() 函数终止脚本并显示一条消息
  • mysql_error() 输出与执行 MySQL 查询相关的最后一个错误

如果要显示自己的消息,请使用以下代码:

if(mysql_query($query)) {
    echo 'success';
}
else {
    echo 'error';
}
于 2013-09-27T20:01:01.893 回答
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

于 2013-09-27T19:57:04.247 回答