MySQL PDO查询单列限制3条却仅返回一行的问题
问题解析:为什么PDO fetch()只返回一行数据?
嗨,我来帮你搞清楚这个问题~
你遇到的核心问题是对PDO的fetch()方法的作用理解有点偏差:
fetch(PDO::FETCH_ASSOC)每次调用只会从查询结果集中取出一行数据,不管你的SQL语句查出了多少条记录。- 你之后的
foreach($result as $key => $value)循环,其实是在遍历这一行数据里的字段(这里只有title一个字段),所以自然只会输出一个结果。
而fetchAll()之所以能正常拿到3条数据,是因为它会一次性把结果集里的所有行都取出来,变成一个二维数组,循环的时候就是遍历每一行记录。
解决办法(两种可选)
如果你不想用fetchAll(),可以用fetch()配合循环,每次取出一行直到结果集为空:
$query = $connect->prepare("SELECT title FROM tutorials LIMIT 3"); $query->execute(); // 循环调用fetch(),直到没有数据返回 while ($row = $query->fetch(PDO::FETCH_ASSOC)) { echo $row['title']; }
当然,如果你想更简洁,其实fetchAll()也可以只返回title列的一维数组,完全符合你“仅需title列”的需求:
$query = $connect->prepare("SELECT title FROM tutorials LIMIT 3"); $query->execute(); // FETCH_COLUMN指定取第0列(也就是title) $result = $query->fetchAll(PDO::FETCH_COLUMN, 0); foreach($result as $title) { echo $title; }
内容的提问来源于stack exchange,提问作者user6651317
相关产品推荐
相关产品推荐

