首页 > 解决方案 > mysql中的错误处理没有捕获正确的错误

问题描述

我有一个相对简单的 MySQLi 多查询。

查询只是将数据添加到 4 个表。

我现在正在尝试构建一些错误处理,以便在有重复的情况下给我一条消息并提出以下建议:

if ($conn->multi_query($sql) === TRUE) {
    echo "Property Added: '$est_name'";
} else if (mysqli_errno() !== 1062) {
  print 'Error - Duplicate Entry!';
}
else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

虽然我最初认为它有效,但我很快就发现了“错误 - 重复条目!” 正在捕获所有错误,即使是那些不重复的错误!

接缝发生的另一件事是,如果我故意尝试在 3 个查询语句中的任何一个中导致错误,则在第一个(即错字)之后它会继续查询并且我没有收到任何错误 - 我不确定如果问题是相关的!

如果有重复,我如何构建错误处理?(而且我的查询问题与“错误”无关吗?)

我的查询看起来像:

$sql = "INSERT INTO Table1 (fname, lname) VALUES ('$fname', '$lname');";

$sql .= "SELECT @get_ID := LAST_INSERT_ID();";

$sql .= "INSERT INTO Table2 (id, street_address ) VALUES (@get_ID, '$street_address');";

$sql .= "INSERT INTO Table3 (id, gender) VALUES (@get_ID, '$gender');";

$sql .= "INSERT INTO Table4 (id, rating) VALUES (@get_ID, '$rating');";

标签: phpmysqlmysqli

解决方案


我的愚蠢错误忘记添加:$conn,并重新订购了声明。

if ($conn->multi_query($sql) === TRUE) {
    echo "Property Added: '$est_name'";
} else if (mysqli_errno($conn) !== 1062) {
  print 'Error - Duplicate Entry!';
}
else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

看起来另一个问题但是关于执行查询是无关的,因为我仍然遇到它!


推荐阅读