Всем привет, я специально ввел неправильные данные для подключения, чтобы проверить как код отлавливает ошибки: PHP: $db = mysqli_connect($host, $name, $password, $dbName) or die('<p>Error connection</p>'); Я пробовал и другие методы: PHP: $db = mysqli_connect($host, $name, $password, $dbName) ; if (!$db){ echo"<p>Error connection</p>"; } else{ echo"<p style='color:green;'>Succes connection<p>"; } И ничего из этого не работает( У меня просто показывает пустую страницу. Кто-нибудь подскажет как ловить такие ошибки подключения
https://phpfaq.ru/debug для начала смотри не на страницу, а на её html код. ну и логи --- Добавлено --- mysqli_report()используй чтобы контролировать как и какие ошибки будут проявляться всегда начинай с чтения официальных доков, а не с форумов. https://www.php.net/manual/ru/mysqli.construct.php
Добрый день! У Вас в PHP отключён error_reporting. Отключил здесь для наглядности PHP: <? error_reporting(0); $db = mysqli_connect($host, $name, $password, $dbName) or die('<p>Error connection</p>'); ?> Показывает пустую страницу, а тут включил PHP: <? error_reporting(1); $db = mysqli_connect($host, $name, $password, $dbName) or die('<p>Error connection</p>'); ?> Показывает Удачи!
Владимир, тот код, что топикстартер отлаживает, подразумевает, что при ошибке сработает его die('текст ошибки'). Этого не происходит, потому что уровень mysqli_report() настроен так, что он генерит исключение, я так думаю. А скрипт ожидает что просто функция вернет пустой ответ (т.е. false) без какого-либо паразитного вывода. Это такой популярный прием из 2000-х, пришедший наверное из PEARL PHP: $var = func() or die('message'); благодаря низкому приоритету операции or, конструкция die() сработает ТОЛЬКО если результат функции может трактоваться как "ложь", т.е. это false, null, 0, '0' или [ ]. А так как большинство функций mysqli возвращают false при ошибке, то оно работает. Но есть нюанс — уровень mysqli_report() ! Поэтому в данном контексте я советую где-то в конфигурации указать mysqli_report(0); и тогда код будет работать как ожидалось. PHP: <?php $host = 'localhost'; $name = 'I know'; $password = 'it is wrong credentials'; $dbName = 'test'; mysqli_report(0); error_reporting(0); $db = mysqli_connect($host, $name, $password, $dbName) or die('<p>Error connecti> echo "-- OK\n"; выдаст на страницу Код (Text): <p>Error connection</p>
Я проверял в моём тесте с error_reporting(0) на OSPanel, PHP 8.1 Выдаёт пустую страницу. Проверил там же Ваш тест PHP: <?php $host = 'localhost'; $name = 'I know'; $password = 'it is wrong credentials'; $dbName = 'test'; error_reporting(0); $db = mysqli_connect($host, $name, $password, $dbName) or die('<p>Error connect</p>'); echo "-- OK\n"; ?> Выдаёт пустую страницу, а с error_reporting(1);
я тоже проверял прежде чем выложить. вы менч озадачили --- Добавлено --- добавил в код явный вызов mysqli_report(0). а то получилось что словами написал, а в примере не показал. сорри!