У меня есть 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.