我在$ result中有一个SQL查询的结果,
$result = $query->fetchall((PDO::FETCH_ASSOC));
在var转储上看起来像这样:
array(7) {
["index"]=>
string(2) "59"
["user_id"]=>
string(32) "154FA6BFDFAA3B283452E84DCC41AF1D"
["trigger_price"]=>
string(2) "33"
["currency"]=>
string(1) "$"
["direction"]=>
string(1) ">"
["title"]=>
string(1) "T"
["date_set"]=>
string(19) "2013-10-09 07:21:17"
}
当我尝试循环访问结果集的元素时,不会打印任何内容。我正在使用此代码:
while ($row = mysql_fetch_array($result) )
{
echo $row["title"];
}
我在PHP中发现了许多绊脚石,这让我感到疯狂,就像有10种方法可以做任何事情,但其中只有一种似乎永远有效!!
我正在使用MAMP,所以可能语法略有不同,对任何可以提供帮助的人都给予正确答案。
我也尝试过:
while ($row = mysql_fetch_array($result, MYSQL_NUM))
和
while ($row = mysql_fetch_row($result)){
echo $row;
}
答案 0 :(得分:2)
使用PDOStatement::fetchAll()
后,您可以使用简单的foreach迭代数组:
foreach($result as $row)
{
echo $row["title"];
}
或者,您可以使用PDOStatement::fetchAll()
而不是PDOStatement::fetch()
,这大致相当于mysql_fetch_array()
:
while ($row = $query->fetch(PDO::FETCH_ASSOC))
{
echo $row["title"];
}
mysql_*
函数不能与PDO互换,并且不推荐使用它们。