php sql查询长度

bvuwiixz  于 2021-06-17  发布在  Mysql
关注(0)|答案(3)|浏览(354)

下面的php代码来自我正在尝试创建的一个网站。基本上,我尝试将sql查询的内容转储到每行有4列的行中。

<?php
    $prep_stmt = $conn->prepare("SELECT * FROM eggs WHERE `egg_dist` = 5");
    $prep_stmt->execute();
    $res = $prep_stmt->fetchAll();

    //$row as $r
    for($x = 0; $x < len($res); $x+=4) {
        echo "<div class ='row'>";
        for($y = $x; $y < $x+4; $y++){
            echo "<div class = 'col-3 text-center'>".$res[$y]['name']."</div>";
        }
        echo "</div>";
    }
?>

outer for循环应该执行结果查询长度的1/4。我想迭代查询数组中的4个条目的内部循环。我想用foreach循环来做这个,但是问题是在foreach的开始它会重新开始,所以我没有办法保存位置,因此我不得不用常规的for循环来做。
我的问题是 len($res) ,这在php中显然不存在。我想获取获取的prepared语句的数组长度,但不太明白如何获取。php官方文档显示使用fetchcolumn(),但我尝试的方式肯定是错误的。我还看到一个网站推荐使用len(),很明显这也不起作用,好像它起作用了,我就不会发表这篇文章了。

kse8i1jr

kse8i1jr1#

您可以得到的行数返回如下

$count = $prep_stmt->rowCount();
xxls0lw8

xxls0lw82#

对于行数,可以使用下面的代码。。
/行数/

$stmt->execute();
 $data = $stmt->fetch(PDO::FETCH_ASSOC);
 $count = $data['count(*)'];

/行数/
http://php.net/manual/en/pdo.prepare.php

b5buobof

b5buobof3#

$prep_stmt = $conn->query("SELECT * FROM eggs WHERE `egg_dist` = 5 limit 4");
$len = $prep_stmt->num_rows;
while($row = $prep_stmt->fetch_assoc()) {
    echo "<div class ='row'>";
    $col = array_keys($row);
    for($y = 0; $y < 4; $y++){
        echo "<div class = 'col-3 text-center'>".$row[$col[$y]]."</div>";
    }
    echo "</div>";
}

或者如果只想打印姓名

while($row = $prep_stmt->fetch_assoc()) {
    echo "<div class ='row'>";
    echo "<div class = 'col-3 text-center'>".$row['name']."</div>";
    echo "</div>";
}

相关问题