Catch не сообщает об ошибке, когда mysqli INSERT терпит неудачу. - PullRequest
0 голосов
/ 18 декабря 2018

Я уверен, что это основная ошибка, но через несколько часов я все еще в тупике.Я просмотрел около дюжины «улов не работает», и ни один из них не показался мне полезным.

Я унаследовал этот фрагмент кода.ВСЕ переменные имеют значения (хотя некоторые являются пустыми строками).Больше чем основная проблема здесь, я беспокоюсь, что мой catch не перехватывает ошибки (ранее оператор пытался сохранить значение в столбце, который не существовал и даже не выдавал исключение).

У меня есть это наверху.(Сначала я попытался с двумя операторами вместе, но это дало проблему - не могу вспомнить, что.)

$mysqli = new mysqli("localhost", "", "", ""); // private stuff taken out
mysqli_report(MYSQLI_REPORT_STRICT);
mysqli_report(MYSQLI_REPORT_ERROR);

Это основной код

$packageResult = $mysqli->query("INSERT INTO package (user_id,
package_name, weight, tracking_number, size_width, size_depth, size_height,
source, carrier, instructions, sent,ot48code) VALUES ({$_SESSION['id']},
'{$_POST['packageName']}', '{$_POST['weight']}', 
'{$_POST['tracking_number']}', '{$_POST['width']}', '{$_POST['depth']}', 
'{$_POST['height']}', '{$_POST['source']}', '{$_POST['carrier']}', 
'{$_POST['instructions']}',  NOW()),$ot48code");

Я немного отладил и, хотя $packageResult возвращается FALSE, код catch никогда не доступен.(Использование Xdebug в PhpStorm.)

 catch (Exception $e)
   {
  echo "<pre>";
  echo "<br>";
  echo "ses testing at 171";
  @var_dump($_SESSION);
  echo "<br>";
  ...
  echo $e->getMessage();

Это правильно для catch?

(PS Я знаю, что все это ужасно небезопасно, но это для альфы, и я медленныймашинистка и довольно ужасный программист (без памяти).

1 Ответ

0 голосов
/ 18 декабря 2018

Чтобы поймать ОШИБКИ , а также исключения, кажется, вам нужно

mysqli_report(MYSQLI_REPORT_ALL);

Эта одна строка спасла меня.

Я действительно думал, что:

mysqli_report(MYSQLI_REPORT_ERROR);

выполнит эту работу, но ...

Надеюсь, это поможет, если вы столкнетесь с той же проблемой.

Большое спасибо @pec.

...