Обработка ошибок в MySQL не ловит правильные ошибки - PullRequest
0 голосов
/ 24 октября 2018

У меня относительно простой Multi Query with 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');";

1 Ответ

0 голосов
/ 24 октября 2018

Глупая ошибка с моей стороны забыл добавить: $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;
}

Похоже, другая проблема, связанная с выполнением запросов, не связана, поскольку я все еще испытываю это!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...