2016-06-09 5 views
0

Я пытаюсь отобразить данные из моей локальной базы MySQL, используя следующий PHP и разметку.Как разрешить ошибку смещения строки и отобразить таблицу в следующем фрагменте кода?

<html> 
<table> 
<tr> 
    <th>field1</th> 
    <th>field2</th> 
    <th>field3</th> 
</tr> 
<?php 
$dbh = new PDO("mysql:host=localhost;dbname=dbtest", 'root', 'root'); 
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$sth = $dbh->prepare("SELECT `fruit_id`, `name`, `variety` FROM fruit"); 
$sth->execute(); 
?> 
<?php foreach($sth->fetch(PDO::FETCH_ASSOC) as $row) : ?> 
<tr> 
    <td><?php echo $row["fruit_id"]; ?></td> 
    <td><?php echo $row["name"]; ?></td> 
    <td><?php echo $row["variety"]; ?></td> 
</tr> 
<?php endforeach;?> 
</table> 

Я получаю ошибочные ошибки смещения String для того же самого. Кроме того, я думаю, из-за того, что я не могу отобразить таблицу. Я новичок в работе с базами данных с использованием PHP, и я действительно смотрел на другие вопросы, связанные с ошибками Ошибки String Offset, прежде чем публиковать мои собственные, но из-за моего опыта на уровне новичка я был не в состоянии понять ответы. Может ли кто-нибудь помочь мне удалить ошибки и отобразить таблицу?

+0

Ваш 'foreach' линия должна быть' в то время как ($ строка = $ sth-> выборки (PDO :: FETCH_ASSOC)) ', насколько я могу сказать, как' fetch' возвращает одну строку за один раз, так в вашем foreach, $ row на самом деле является столбцом, а не строкой. –

ответ

1

Используйте $ sth-> fetchAll() в foreach, потому что $ sth-> fetch() возвращает только одну строку.

<?php foreach($sth->fetchAll() as $row) : ?> 
+0

Пожалуйста, для более подробного объяснения. – yergo

+0

fetch() возвращает только одну строку. – Mani

+0

Хорошо. Другими словами: пожалуйста, расширьте свой ответ с помощью правильного объяснения, чтобы сделать его понятным для других, возможно, новичков. Yuvm – yergo

Смежные вопросы