2014-02-12 34 views
0

我使用PDO与我的PHP项目,我不知道为什么这是行不通的。它没有显示任何错误。foreach不工作在php与pdo

我有一个函数来从数据库中读取数据:

function Read_post($con,$table,$limit=6){ 

    try { 
     $query = "SELECT * FROM {$table} ORDER BY id DESC LIMIT {$limit}"; 
     $stmt = $con->prepare($query); 
     $stmt->execute(); 
     return $stmt->fetch(PDO::FETCH_ASSOC); 
    } catch (Exception $e) { 
     return "ERROR". $e->getMessage(); 
    } 

} 

和我使用foreach循环来显示数据。但它没有显示任何东西:

<?php $posts = Read_post($con,"posts"); ?> 

<?php foreach ($posts as $key) { 
    echo "something "; 
    echo $key["title"]; 
} ?> 

它没有显示其他文本,以及像如果我呼应别的东西只有文字。

+1

你试过调试过吗?我认为'$ posts'是简单的空......因此为什么foreach永远不会执行 – helion3

+0

我的想法也是 – FabioG

+0

echo查询并直接在phpmyadmin中运行 –

回答

0

呼应阵列的$valueforeachvar_dump($post)检查数组包含

东西

<?php foreach ($posts as $value) { 
     echo "something "; 
     echo $value; 
    } ?> 
+0

'var_dump($ value)'可能更合适,因为它可能是一个数组或对象本身。 –

+0

它没有显示任何内容 –

1

里面的功能Read_post,你有这样一行:

return $stmt->fetch(PDO::FETCH_ASSOC); 

它将不返回数组,它将返回一个PDO对象。您不能像数组一样迭代PDO对象。试试这个:

$result = $stmt->fetch(PDO::FETCH_ASSOC); 
return $result; 
+0

它现在显示此错误(!)警告:无效的参数为foreach()提供的C:\ wamp \ www \ Bootstrap \ admin \ manage_post.php 50行 –

+0

因此,在foreach ($ posts为$ key)行,试试这个: echo'posts ='.print_r($ posts)'。
'; 来查看您的查询是否实际上返回任何数据,或者您是否有空集。 – larsAnders

+0

是否为你工作? – larsAnders