Intereting Posts
Как необязательно добавить запятую и пробел в группу захвата? Заполнение пробелов в датах, возвращаемых из базы данных – возможно использование чистого SQL-решения? Почему заголовок Content-Type: image / jpeg не работает? Почему этот запрос MySQL с использованием rand () не возвращает результатов примерно в треть? Как загрузить расширение pthreads в CLI? Как использовать коллекции на фабрике fieldset в ZF2 Синхронизировать в php или zend framework Добавить купон в электронную почту для обработки, только если клиент не использовал один Дифференцировать варианты с правильным ответом с помощью PHP Google Script отправляет значения формы по электронной почте, ошибка: невозможно прочитать свойство "namedValues" HTML-код, не работающий над вызовом jquery, вместо этого выводит HTML-код JSON кодирует результаты MySQL Вызов fcsh из скрипта PHP Подключение к базе данных SQL Server с помощью PHP Создание массива и форматирование JSON для API Google Charting API

PHP: Предупреждение: sort () ожидает, что параметр 1 будет массивом, ресурс указан

Я хотел бы упорядочить массив списка таблиц с помощью функции sort (), но я получаю такое же предупреждение о моем коде следующим образом:

<?PHP require_once("lib/connection.php"); $result = mysql_query("SHOW TABLES FROM `st_db_1`"); sort($result); foreach ($result as $result){ echo $result ; } ?> 

и предупреждение, которое я получаю:

 Warning: sort() expects parameter 1 to be array, resource given in C:\wamp\www\Copy (4) of st_db_1\test_2.php on line 9 Warning: Invalid argument supplied for foreach() in C:\wamp\www\Copy (4) of st_db_1\test_2.php on line 10 

Solutions Collecting From Web of "PHP: Предупреждение: sort () ожидает, что параметр 1 будет массивом, ресурс указан"

Предупреждение довольно ясно: mysql_query не возвращает массив с результатами запроса, а ресурс. Для возврата необходимых данных вам нужна функция, например mysql_fetch_array() и для которой вы можете выполнить операцию сортировки.

См. Руководство по использованию mysql_query() http://nl3.php.net/mysql_query

И, возможно, не связаны, но вы можете отсортировать результаты в MySQL сразу, добавив ORDER BY <fieldname> к вашему запросу.

Результат переменной $ result является только ресурсом результата типа. Вам нужно получить данные из набора результатов, например, mysql_fetch_assoc () .

 $result = mysql_query("SHOW TABLES FROM `st_db_1`"); $array = array(); while ($row = mysql_fetch_assoc($result)) { $array[] = $row["Tables_in_st_db_1"]; } sort($array); foreach ($array as $item) { echo $item; } 

Я не предоставляю наиболее эффективный код, который можно себе представить, но это должно дать понять, что происходит и решить вашу проблему:

  $result = mysql_query("SHOW TABLES FROM `st_db_1`"); $my_array_of_table_names = array(); while ( $row = mysql_fetch_array($result, MYSQL_NUM)) { $my_array_of_table_names[] = $row[0]; } sort($my_array_of_table_names); foreach ($my_array_of_table_names as $table_name){ echo "$table_name\n"; } 

Ваша проблема в том, что вы фактически не получаете данные из запроса.

mysql_query() не дает вам набора записей.

Он выполняет запрос базы данных и возвращает ресурс базы данных, который затем можно использовать для получения данных.

Вам нужно после вызова mysql_query() , тогда вам также нужно вызвать mysql_fetch_array() или подобное. (имеется ряд доступных функций, но это, вероятно, лучший вариант для использования в этом случае). Затем sort() данные из этого, а не $result .

В нем четко сказано: он ожидает массив, и вы передаете что-то еще.

Если бы вы проверили тип $result вы бы увидели, что это не массив, введите ресурс.