Помощник
|
Mysqli_num_fields () ожидает .... |
ROM710
|
Сообщение
#1
|
||
|
|
||
|
|||
Artos_mw |
8.5.2020, 11:58;
Ответить: Artos_mw
Сообщение
#2
|
|
РОМ710, сравните приведённый вами код и текст предупреждения:
mysql_list_fields и mysqli_num_fields. Разница не только в функциях, но и типе: mysql и mysqli. Используйте что-то одно, лучше с буковкой i. Теперь про null. При попытке подключения к базе $link = mysqli_connect("host", "user", "pass", "world"); создаётся имя соединения и присваивается переменной $link. Далее в скриптах, при использовании функций обращения к базе необходимо им передавать имя соединения. Так вот. Имени соединения может и не оказаться в $link в некоторых случаях. 1. По каким-то причинам соендинение не состоялось (не те имя, пароль, неисправность сервера или др.) и имя присвоилось никакое, т. е. null. 2. Испльзуемые значения находятся в разных зонах вилимости. Допустим, mysqli_connect использутете внутри функции 1 моя_функция_1() { $link = mysqli_connect(... // и ещё куча кода } а mysqli_num_fields внутри функции 2 моя_функция_2() { $aaa = mysqli_num_fields($link, ... // и ещё куча кода } В таком случае во второй функцие получим ругательство про null ибо вторая функция не видит, что делалось в первой. Что делать. В причине номер 1 добавить код проверки соединения, что-то типа if (!($link = mysqli_connect("host", "user", "pass", "world"))) { //сообщить в браузер "Нет соединения" и выполнить аварийный сценарий. } else { // продолжить выполнение нормального сценария } В причине номер 2 передавать $link внутрь второй функции, предварительно достав из первой функции. Способов для этого много, например, объявляя суперглобальные, создавая свои константы и др. способы. Сообщение отредактировал Artos - 8.5.2020, 12:02 |
|
|
miketomlin |
8.5.2020, 12:53;
Ответить: miketomlin
Сообщение
#3
|
|
В MySQLi fetch_fields()
Сообщение отредактировал miketomlin - 8.5.2020, 13:02 -------------------- |
|
|
miketomlin |
8.5.2020, 13:23;
Ответить: miketomlin
Сообщение
#4
|
|
Причем это не аналог mysql_list_fields. Если нужна инфа о полях прямо из БД, используйте соотв. запрос, указанный в описании к этой ф-ции.
И результаты выполнения запросов нужно проверять, а то будете периодически ловить ошибки, подобные показанной, в работающих сайтах. Artos_mw, функции mysqli_num_fields в природе не существует. Пусть сначала ТС норм. объяснит, что он хочет получить. А то там возможны варианты, у него все слишком запутано. -------------------- |
|
|
ROM710
|
Сообщение
#5
|
|
Спасибо большое всем за подсказки и пояснения, читаю ючусь. В моем случае Получается если прописываю MySQLi fetch_fields() и объявляю переменную if(isset($database)). Тестирую, вроде работает. Спасибо еще раз.
|
|
|
Artos_mw |
9.5.2020, 1:01;
Ответить: Artos_mw
Сообщение
#6
|
|
функции mysqli_num_fields в природе не существует Функция с именем mysqli_num_fields в природе может не существовать, а вот в отдельно взятом скрипте может быть создана программистом как пользовательская. Разумеется, к mysqli она отношения иметь не будет. Сообщение отредактировал Artos - 9.5.2020, 1:05 |
|
|
MattCutts_mw |
9.5.2020, 14:09;
Ответить: MattCutts_mw
Сообщение
#7
|
|
|
|
|
ROM710
|
Сообщение
#8
|
|
Спасибо MattCutts за подсказк, удобнее.
|
|
|
miketomlin |
9.5.2020, 18:08;
Ответить: miketomlin
Сообщение
#9
|
|
|
«в последних версиях пыха» в этом отношении ничего не изменилось. Это разные вещи. Но действительно object/null и, само собой, логические значения можно проверять при помощи if ($var), вот только к неопределенной переменной это не относится.
Выше уже был пример. Вот типовой код:
Это ф-ции-обертки, но с нативными ф-циями пыха можно работать точно так же.
-------------------- |
|
|
||
|
Текстовая версия | Сейчас: 29.3.2024, 5:20 |