Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2017, 06:13   #1
Александр goric
 
Регистрация: 11.12.2017
Сообщений: 5
По умолчанию Fatal error: Call to undefined function mysqli_fetch_all()

Здравствуйте!
Подскажите пожалуйста вот такой вопрос.
На локальном сервере все работает нормально, т.е. все выбирается из базы:
Код:
//Вывод работ из таблицы portfolio
function selectAllPortfolio(){
  global $mysqli;
  $sql = "SELECT href, img, alt, text
            FROM portfolio";
            
  if(!$result = mysqli_query($mysqli, $sql))
    return false;
	$portfolio = mysqli_fetch_all($result, MYSQLI_ASSOC);
	mysqli_free_result($result);
  return $portfolio;    
}
Как только переместил сайт на хостинг, стало выдавать ошибку:
Код:
Fatal error: Call to undefined function mysqli_fetch_all()
Искал по интернету ответ, но так и не нашел.
На хостинге проверял phpinfo() - mysqlnd включен, т.е. enabled, версия php 5.5.38
В чем проблема?
Спасибо.
Александр goric вне форума Ответить с цитированием
Старый 11.12.2017, 07:38   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

http://php.net/manual/ru/mysqli-result.fetch-all.php

Читаем внимательно:

Цитата:
Только для MySQL Native Driver

Доступно только с расширением mysqlnd.

Так как mysqli_fetch_all() сразу возвращает все строки в виде массива, это может заметно увеличить расходы памяти, нежели несколько запусков функций, вроде mysqli_fetch_array(), которые помещают в массив только одну строку результирующей таблицы. С другой стороны, если требуется многократно переходить от одной строки к другой и выбирать при этом по одной строке, придется каждый раз конструировать новый массив, что тоже не добавит быстродействия. Поэтому, mysqli_fetch_all() нужно использовать только в тех ситуациях, когда весь результирующий набор будет передаваться для обработки в какое-то другое место.
Данное расширение на сервере стоит?
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 11.12.2017, 08:17   #3
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

ну а сам mysqli то тоже подключен?
ADSoft вне форума Ответить с цитированием
Старый 11.12.2017, 08:29   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
ну а сам mysqli то тоже подключен?
Я думаю, если бы не был подключен, то ругалось бы чуть раньше, вот тут:

Код:
mysqli_query($mysqli, $sql))
Потому и не стал спрашивать )
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 11.12.2017, 14:41   #5
AlNick
Пользователь
 
Регистрация: 15.08.2017
Сообщений: 17
По умолчанию

Расширение должно быть. С версии 5.3 его не нужно устанавливать. Имеет смысл написать в техподдержку и уточнить
AlNick вне форума Ответить с цитированием
Старый 11.12.2017, 14:58   #6
Александр goric
 
Регистрация: 11.12.2017
Сообщений: 5
По умолчанию

Цитата:
Сообщение от AlNick Посмотреть сообщение
Расширение должно быть. С версии 5.3 его не нужно устанавливать. Имеет смысл написать в техподдержку и уточнить
Уточнил. Они включили модуль mysqli, ошибка пропала, но из базы все равно ничего не выбирает.
Александр goric вне форума Ответить с цитированием
Старый 11.12.2017, 15:18   #7
AlNick
Пользователь
 
Регистрация: 15.08.2017
Сообщений: 17
По умолчанию

Если выборка пустая, то mysqli_fetch_all() ничего не вернёт. Вам сначала нужно разобраться, содержит ли что-то результат выборки
AlNick вне форума Ответить с цитированием
Старый 11.12.2017, 16:14   #8
Александр goric
 
Регистрация: 11.12.2017
Сообщений: 5
По умолчанию

Цитата:
Сообщение от AlNick Посмотреть сообщение
Если выборка пустая, то mysqli_fetch_all() ничего не вернёт. Вам сначала нужно разобраться, содержит ли что-то результат выборки
Все у меня есть в базе.
Александр goric вне форума Ответить с цитированием
Старый 11.12.2017, 16:34   #9
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Названия полей и таблиц в запросах нужно экранировать обратными одинарными кавычками:
`field_name`
`table_name`
В данном запросе в названиях полей таблицы есть ключевое слово mysql.
http://phpfaq.ru/debug
Andkorol вне форума Ответить с цитированием
Старый 11.12.2017, 19:22   #10
Александр goric
 
Регистрация: 11.12.2017
Сообщений: 5
По умолчанию

Что за бред на локалке все работает, а в нете нет!

Последний раз редактировалось Александр goric; 11.12.2017 в 19:25.
Александр goric вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выдает такую ошибку: Fatal error: Uncaught Error: Call to undefined function mysql_connect() Shadowfank PHP 5 05.03.2017 16:32
Как обработать: Fatal error: Call to a member function asArray() on a non-object in ? СамСебеСамса PHP 12 21.03.2014 20:56
Call to undefined function sqlite_open() Feelnoobskill PHP 0 24.04.2013 23:12
Call to undefined function 'pow' fs444 Общие вопросы C/C++ 4 14.01.2010 14:34
Fatal error: Call to undefined function mysql_connect() Air Помощь студентам 1 17.01.2009 12:41