现在我明白你不能只使用echo来打印数组的内容而你必须使用foreach但是由于某种原因这不起作用。有什么想法吗?
$rows = $stmt->fetchAll();
foreach ($rows as $key=>$row)
{
echo "My value at $key is $row";
}
}
输出:
My value at 0 is ArrayMy value at 1 is ArrayMy value at 2 is Array
答案 0 :(得分:4)
您似乎已使用fetchAll
从PDO获取了某些内容。
此方法返回一个数组(行)数组。内部数组具有column_name => value
个元素。例如,如果您检索到列'firstName'和'lastName',则第一条记录的这些值将分别为$rows[0]['firstName']
和$rows[0]['lastName']
。
这样做的正确方法是:
$rows = $stmt->fetchAll();
foreach ($rows as $key => $row) {
foreach ($row as $column => $value) {
echo "My $column value for row $key is $value\n";
}
}
Protip:观察括号对齐,这与正确无关,但使代码更具可读性:)
答案 1 :(得分:1)
答案 2 :(得分:1)
$ row是另一个无法直接转换为字符串的数组。您可以使用此函数来检查数组内容。
function d($data)
{
echo '<pre>';
print_r($data);
echo '</pre>';
}
d($stmt->fetchAll());
并且您做得更好(如果您忘记删除其通话不会损害您的网站)
define('ENVIRONMENT', 'development');
function d($data)
{
if(ENVIRONMENT == 'development')
{
echo '<pre>';
print_r($data);
echo '</pre>';
}
}
d($stmt->fetchAll());
答案 3 :(得分:0)
//<pre> tag will give you a well formatted version of var_dump
echo "<pre>";
var_dump($rows);
echo "</pre>";
答案 4 :(得分:0)
尝试此操作来调试$row
:
$rows = $stmt->fetchAll();
foreach ($rows as $key=>$row)
{
echo "First key: $key | ";
foreach($row as $subkey => $subrow)
{
echo "Subkey: $subkey | Value: $subrow <br />";
}
}
Addiotinally,使用var_dump(),print_r()和var_export()等功能很重要,它们可以防止很多问题。
答案 5 :(得分:0)
//@parram $data-array,$d-if true then die by default it is false
//@author Your name
function p($data,$d = false){
echo "<pre>";
print_r($data);
echo "</pre>";
if($d == TRUE){
die();
}
} // END OF FUNCTION
每当你需要字符串或数组时,就会使用这个函数。 有2个Patameters 1. $ data - 可以是Array或String 2. $ d - 默认情况下为FALSE,但如果设置为true,则执行die()函数
在你的情况下,你可以这样写..
$rows = $stmt->fetchAll();
foreach ($rows as $key=>$row) {
p($rows); // to use p function use above code for p() in your code
}