Intereting Posts
Почему этот facebook создает код альбома, создавая дубликаты альбомов? как удалить такой же номер в php? Наследование класса таблицы Doctrine, когда один подкласс не имеет дополнительных атрибутов Функция PHP, которая получает строку cron и возвращает следующую временную метку запуска Я выполняю проблему с фоновым процессом php Значения массива сумм одного и того же ключа Есть ли способ переопределить подсказку типа к классу потомков при расширении абстрактного класса? Показывать что-то в определенное время каждую неделю с помощью PHP Установить HTTP-заголовок в UTF-8 с помощью PHP Возможно ли прочитать значение cookie / session при выполнении скрипта PHP5 через командную строку? phpdoc: Каков правильный способ документирования константы Объединение подготовленного оператора в функцию PHP-файл с несколькими расширениями файлов PHP-массив из файла cookie: отображается только после обновления страницы? CKEditor + Yii, загруженный AJAX: $ _POST не содержит обновленного значения

Массив для преобразования строк в PHP

Так как название говорит, что у меня проблема при попытке отобразить 5 результатов из моего SQL-запроса, я не знаю, как преобразовать их в массив,

# Collection of SQL try { $sql = $conn->query("SELECT Channel_Location FROM channels ORDER BY RAND() Limit 5"); } catch(PDOException $e) { echo $sql . "<br>" . $e->getMessage(); } foreach($sql->fetchAll(PDO::FETCH_ASSOC) as $c) { echo $c . "<br>"; } $conn = null; 

Я не могу понять, как отображать результаты, он отображает один результат, если я изменяю foreach($sql->fetchAll(PDO::FETCH_ASSOC) as $c) { для foreach($sql->fetch(PDO::FETCH_ASSOC) as $c) { но мне нужно отображать каждый результат

 $sql = "SELECT Channel_Location FROM channels ORDER BY RAND() Limit 5"; $channels = $conn->query($sql)->fetchAll(PDO::FETCH_COLUMN); foreach($channels as $c) { echo $c . "<br>"; } 

Основная проблема заключается в том, что вы пытаетесь использовать переменную, которая ничего не знает о ее типе. Он идет как для $ sql (который также неверно назван), так и для результата fetchAll. Вы должны знать тип переменной заранее, либо из руководства, либо из быстрого теста. $ sql не содержит строку SQL, и вы не можете повторить ее. результат fetchAll содержит вложенный массив, значит, когда вы его итерируете, у вас все еще есть массив как элемент, который вы также не можете эхо-эхо. Чтобы проверить переменную и посмотреть, можно ли ее повторить, всегда используйте var_dump() в случае возникновения проблем.

Чтобы решить все многочисленные проблемы,

  • правильно укажите свои переменные (чтобы отличить SQL-запрос от оператора)
  • избавиться от try catch (поскольку PHP уже сообщит вам об ошибке)
  • используйте PDO :: FETCH_COLUMN вместо PDO :: FETCH_ASSOC, который даст вам желаемый тип результата – одномерную атаку.