Два НАЙ-ГОЛЕМИТЕ проблема с вашия код и вашето "решение":
- Имате
@
оператор навсякъде. За което имате -1 глас на вашия въпрос.@
оператор е самото зло. ИТ отговаря за празната страница, която виждате. - Избраното от вас лекарство обаче влоши нещата. Това нещо „ИЛИ умри“ не е магическа песен за решаване на всеки проблем с докладването на грешки. И неправилното използване ще доведе до грешки като такъв, който имате. За което имате
1
в съобщението за грешка.
Първо, включването ви е наред, така че оставете го.
За да получите грешка от mysqli, следвайте тези инструкции:
Вместо да добавяте произволно „или умрете“, имате нужда от по-стабилно и полезно решение за докладване на грешки.
Ако използвате mysqli_query() в целия код на приложението, без да го капсулирате в някакъв помощен клас, trigger_error()
е добър начин за генериране на PHP грешка, тъй като ще ви каже също файла и номера на реда, където е възникнала грешката
$res = mysqli_query($mysqli,$query) or trigger_error(mysqli_error($mysqli)."[$query]");
във всички ваши скриптове
и оттогава ще бъдете уведомени за причината, поради която обектът не е създаден.(Ако сте любопитни за това or
синтаксис, обяснил съм го тук
- също така обяснява защо имате (1)
в съобщението за грешка)
Въпреки това , ако капсулирате заявката си в някакъв клас, файл и ред от грешка на задействане ще бъдат доста безполезни, тъй като ще сочат към самото извикване, а не към кода на приложението, което е причинило определен проблем. Така че, когато се изпълняват капсулирани команди на mysqli, трябва да се използва друг начин:
$result = $mysqli->query($sql);
if (!$result) {
throw new Exception($mysqli->error." [$query]");
}
като изключение ще ви предостави проследяване на стека , което ще ви отведе до мястото, от което е извикана грешна заявка.
Обърнете внимание, че трябва да можете да виждате PHP грешки като цяло. На жив сайт трябва да надникнете в регистрационните файлове за грешки, така че настройките трябва да бъдат
error_reporting(E_ALL);
ini_set('display_errors',0);
ini_set('log_errors',1);
докато на локален сървър за разработка е нормално да правите грешки на екрана:
error_reporting(E_ALL);
ini_set('display_errors',1);
и, разбира се, никога не трябва да използвате оператор за потискане на грешки (@) пред вашите изявления.