php - 关于mysqli_fetch_row一次只能返回一行数组
阿神
阿神 2017-04-10 15:27:57
[PHP讨论组]
$qst_id = $_GET['str'];
if ($qst_id) {
    $qst_sql = "SELECT * FROM exam_qst WHERE qst_id='$qst_id'";
    $query = $conn -> query($qst_sql);
    $row = $query -> fetch_array();
    $length = sizeof($row)/5;
    $a = 0;
    while ($a < $length) {
        $i = 0;
        echo "<tr>";
        while ( $i< 5) {
            $j = $i++;
            echo "<td>$row[$j]</td>";
        }
        echo "</tr>";
        $a++;
    }
    $query -> close();  
} 
$conn -> close();

如代码,每次查询数据库应该取出多行数据,但是mysqli_fetch_array跟mysqli_fetch_row似乎都只能返回一行数据。请问如何能将查询到的所有数据全部装到一个数组里。

阿神
阿神

闭关修行中......

全部回复(2)
大家讲道理
$qst_id = $_GET['str'];
if ($qst_id) {
    $qst_sql = "SELECT * FROM exam_qst WHERE qst_id='$qst_id'";
    $query = $conn -> query($qst_sql);
    $row = $query ->fetch_all();
    foreach ($row as $vl){
        echo "<tr><td>".$vl[1]."</td><td><a onclick='show_more(this)'>".$vl[2]."</a></td><td>".$vl[5]."</td><td>".$vl[4]."</td><td>".$vl[6]."</td></tr>";
    }
    $query -> close();  
}

确实是需要遍历所有的结果集,自己用foreach来执行并成功返回了。还是谢谢 @捞鱼的转阿转

伊谢尔伦

话说是mysql__fetch_array和mysql_fetch_row吧。他俩功能差不多,都是已数组的形式返回一行数据。
所以返回一行是没错的。你需要的是遍历所有的结果集,需要通过循环的帮助。

下面的给你参考

php    /**
     * 获取执行SQL所有数据
     * @param  [type] $sql 待执行
     * @return [type]      执行返回结果
     */
    public function fetchAll($sql){
        if ($result = $this->query($sql)) {
            $rows = array();
            while ($row = mysql_fetch_row($result)) {
                $rows[ ] = $row;
            }
            mysql_free_result($result);
            return $rows;
        }else{
            return false;
        }
    }
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号