Прежде всего, вы не можете поймать такое предупреждение с таким условием.Просто потому, что оно поднято в строке с bind_param
, следовательно, это происходит до проверки состояния ниже.
Следовательно, возможно, ваше замешательство - состояние работает хорошо, но уже слишком поздно.
Я бы предложил отлавливать все ошибки с помощью простого обработчика ошибок.проблема не является специфической для mysqli, обычно вы хотите перехватывать все предупреждения и другие ошибки и обрабатывать их единообразно.Вы можете найти пример в моей статье о сообщениях об ошибках PHP :
set_error_handler("myErrorHandler");
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
error_log("$errstr in $errfile:$errline");
header('HTTP/1.1 500 Internal Server Error', TRUE, 500);
readfile("500.html");
exit;
}
Это будет делать именно то, что вы хотели в вашем состоянии, но без необходимости писать такое условие каждый раз, когда выготовим SQL-запрос.