【发布时间】:2015-04-17 16:35:24
【问题描述】:
try
{
$db = new PDO('mysql:host=localhost;dbname=wba', 'root', '');
}
catch(PDOException $e)
{
echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
}
$db->exec("set names utf8");
$stmt = $db->query("SELECT * FROM atrakcje WHERE `akceptacja` !=1 ORDER BY ID DESC");
foreach($stmt as $row)
{
echo "<div class='pure-u-1' style='background:#ecf0f1; border:0px; margin-bottom:20px;'>";
echo "<h2>".$row['tytul']."</h3>";
echo "<h3>Blok: ".$row['blok']."</h2>";
echo "<p style='padding:15px;'>".$row['opis']."<br><br><i style='float:right; padding-right:10px;'>".$row['imienazwisko']." \"".$row['ksywka']."\"</i></p>";
echo "</div>";
}
$stmt->closeCursor();
我使用这样的代码。我得到了
为 foreach() 提供的参数无效
在第 31 行 foreach($stmt as $row)
【问题讨论】:
-
$stmt将是一个结果对象,而不是一个数组。需要做一个 WHILE 循环。 php.net/manual/en/pdo.query.php -
您的查询似乎失败了,
$stmt是false而不是PDOStatement对象。您应该通过添加/启用错误处理来检查失败的原因。 -
我注意到并更新了我的链接。
-
@Twisty 在同一页面中:
A nice feature of PDO::query() is that it enables you to iterate over the rowset returned by a successfully executed SELECT statement. -
也可以让PDO抛出异常。打开连接后输入:
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);