循环和函数返回PDO

时间:2015-05-16 16:07:30

标签: php mysql pdo

我想使用' return'函数与我的Mysql查询的while循环,但它只返回一个结果。
我在我的数据库中有这个:

id  name   author
1   foo    fooo
2   foo2   fooo2

它仅返回" 2",但我想要" 1"," 2"," 3"等..
这是我的代码:

function get_thm_cat() {
require 'database.php';
$req = $bdd->prepare("SELECT * FROM sk_cat ORDER BY id ASC");
$req->execute();
if ($req->rowCount() > 0) {
while ($row = $req->fetch()) {
return '<ul id="ul_cat"><li id="li_cat">'.$row["id"].'&nbsp; Name = '.$row["name"].'<br>';
} 
} 
$req->closeCursor(); 
}

2 个答案:

答案 0 :(得分:1)

return是结束函数并继续处理它停止的代码的命令。您应该将结果存储在while循环中并返回包含这些结果的数组,或者您应该在echo循环中while结果。

while ($row = $req->fetch_assoc() ) {
echo '<ul id="ul_cat"><li id="li_cat">'.$row["id"].'&nbsp; Name = '.$row["name"].'<br>';
} 

$results = array();

while ($row = $req->fetch_assoc() ) {
$results[] = '<ul id="ul_cat"><li id="li_cat">'.$row["id"].'&nbsp; Name = '.$row["name"].'<br>';
} 

return $results;

答案 1 :(得分:1)

使用return停止执行该函数,这意味着当PHP第一次遍历循环并到达return时,它会立即返回到您最初调用该函数的位置。当执行结果超过0行时,不会执行while循环的任何后续迭代,并且也不会执行对$req->closeCursor();的调用。

在彼此之后返回多个字符串的最简单方法是创建一个临时变量,在每次迭代时填充并在循环后返回,如下所示:

$output = '';

while ($row = $req->fetch()) {
    $output .= '<ul id="ul_cat"><li id="li_cat">'.$row["id"].'&nbsp; Name = '.$row["name"].'<br>';
} 

return $output;