mysql中的错误处理未捕获正确的错误

vyswwuz2  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(250)

我对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');";
6vl6ewon

6vl6ewon1#

我犯了个愚蠢的错误,忘了加上: $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;
}

看起来像是关于执行查询的另一个问题是无关的,因为我仍然在经历它!

相关问题