Выбор данных таблицы с помощью операторов PDO

У меня есть php-скрипт, который выбирает данные через mysql_, однако в последнее время я читал, что PDO – это способ пойти и что mysql_ становится обесцененным. Теперь я конвертирую этот скрипт в PDO.

Мой вопрос заключается в том, что я не использую $ _POST для выбора. Я просто хочу выделить всю таблицу со всеми своими данными, поэтому я ввожу этот запрос:

$query = $dbh->prepare("SELECT * FROM students"); $query->execute(); $result = $query->fetchall(); // or you can just $result = $query as hakre proposed! 

поэтому, как и я, с моей старой обесцененной версией mysql_ скрипта, я использовал эхо-эхо-таблицу для таблицы с данными в ней.

  echo "<table border='2'> <tr> <th>ID</th> <th>A Number</th> <th>First Name</th> <th>Last Name</th> <th>Why</th> <th>Comments</th> <th>Signintime</th> </tr>" ; foreach($result as $row) { echo "<tr>"; echo "<td>" . $row['id'] . "</td>"; echo "<td><a href=Student.php?studentA_num=" . $row['anum'] . ">" .$row['anum'] . " </a></td>"; echo "<td>" . $row['first'] . "</td>"; echo "<td>" . $row['last'] . "</td>"; echo "<td>" . $row['why'] . "</td>"; echo "<td>" . $row['comments'] . "</td>"; echo "<td>" . $row['signintime'] . "</td>"; echo "<td> <input type=\"button\" value=\"Start Session\"onClick=\accept.php?id=" . $row['id'] . "&start=true></td>"; } echo "</tr>"; echo "</table>"; 

теперь, используя это, я не могу получить один вывод для своей таблицы.

Это все, что выводится

Мой вопрос: я что-то упустил из своих утверждений? Или я не собираю строки? Также я установил настройки соединения в другом скрипте под названием connect.php, который требуется init.php (в верхней части всех моих страниц)

Изменить: 1

Отредактировал код, чтобы он теперь работал, также добавляя картинку, чтобы показать другим, как это должно выглядеть! Надеюсь, кто-то может это использовать! Вот как это выглядит!

Вы делаете слишком много:

 $query = $dbh->prepare("SELECT * FROM students"); $query->execute(); $result = $dbh->query($query); 

Проблемная линия:

 $result = $dbh->query($query); 

Проверьте с помощью http://php.net/pdo.query параметр – это строка, на самом деле строка SQL, которую вы уже используете выше, а не результат результата вызова PDO::prepare() .

Для вашего простого запроса вы можете просто сделать:

 $result = $dbh->query("SELECT * FROM students"); 

Или если вы хотите подготовить:

 $query = $dbh->prepare("SELECT * FROM students"); $query->execute(); $result = $query; 

Более поздняя версия является некоторым шаблоном, если вы хотите вставить переменные в запрос, поэтому вы его готовите.


Следующая проблема foreach линией foreach :

 foreach($result as $row); 

Вы заканчиваете цикл сразу из-за точки с запятой ; в конце. Удалите эту точку с запятой, чтобы следующий кодовый блок с квадратным скобкой стал телом цикла foreach.

Ваш код неправильный:

 $query = $dbh->prepare("SELECT * FROM students"); $query->execute(); $result = $dbh->query($query); 

После выполнения подготовленного оператора вы можете просто вызвать fetchAll() :

 $query = $dbh->prepare("SELECT * FROM students"); $query->execute(); $result = $query->fetchAll(); 

Остальная часть вашего кода будет работать отлично после удаления точки с запятой после foreach.