2016-02-23 3 views
0

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

# 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) {, но мне это нужно для отображения каждого результата

ответ

2
$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 из заявления)
  • избавиться попытку поймать (как PHP уже будет сообщать об ошибке для вы)
  • PDO :: FETCH_COLUMN вместо PDO :: FETCH_ASSOC, который даст вам желаемый тип результата - одномерную атаку.
Смежные вопросы