我想使用' 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"].' Name = '.$row["name"].'<br>';
}
}
$req->closeCursor();
}
答案 0 :(得分:1)
return
是结束函数并继续处理它停止的代码的命令。您应该将结果存储在while
循环中并返回包含这些结果的数组,或者您应该在echo
循环中while
结果。
while ($row = $req->fetch_assoc() ) {
echo '<ul id="ul_cat"><li id="li_cat">'.$row["id"].' Name = '.$row["name"].'<br>';
}
或
$results = array();
while ($row = $req->fetch_assoc() ) {
$results[] = '<ul id="ul_cat"><li id="li_cat">'.$row["id"].' 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"].' Name = '.$row["name"].'<br>';
}
return $output;