我想在循环中输出myTable的myTable和输出field1的数量。
但是,如果我运行以下代码,则只会打印10'test:'。
如果我删除[$rows = $statement->fetchAll(PDO::FETCH_ASSOC);]
并将$count of for()
更改为10
,则可以正常使用,但这不是我想要的。
<?php
$db = new PDO("mysql:host=localhost;dbname=mydb;charset=utf8;", myid, mypw);
$statement = $db->query('select field1 from myTable limit 10');
$rows = $statement->fetchAll(PDO::FETCH_ASSOC);
$count = count($rows);
echo "count : $count<br><br>";
for($i = 0; $i < $count; $i++)
{
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo 'test : '.$row['field1'].'<br>';
}
?>
我想避免以下方法来计算myTable的数量。因为不必要地添加看起来相似的查询语句。
$count = $db->query('SELECT count(*) FROM qudtls_mutter')->fetchColumn();
答案 0 :(得分:0)
结果,来自
$rows = $statement->fetchAll(PDO::FETCH_ASSOC);
将是关联数组,您需要计算。
您只需使用$statement->rowCount():int
即可返回上次查询的计数。
然后您可以将其与FOR
for ($i=0; $i<$statement->rowCount(); $i++) {
}
对于其他用途,您可以使用WHILE
while ($row = $statement->fetch(PDO::FETCH_ASSOC)) {
}
使用foreach
,只需:
foreach ($statment as $row) {
}
答案 1 :(得分:0)
$db = new PDO("mysql:host=localhost;dbname=mydb;charset=utf8;", myid, mypw); $statement = $db->query('select field1 from myTable limit 10'); $rows = $statement->fetchAll(PDO::FETCH_ASSOC);
如上所述,上述十行的 fetch All
。 结果集中现在不再有fetch
行。这是可以预期的。
改变这个:
for ($i = 0; $i < $count; $i++) {
$row = $statement->fetch(PDO::FETCH_ASSOC);
到此:
foreach ($rows as $i => $row) {
让它工作。在fetchAll
您已经拥有所有行后,您无需再次获取它们,如果您尝试,它将无效。
如果要输出整个表,请不要fetchAll,而是在没有任何内容的情况下获取。删除fetchAll,并:
$i = 0;
while ($row = $statement->fetch(PDO::FETCH_ASSOC)) {
$i++;
// This will execute for all rows. It will exit as soon as fetch() returns null at the end of the query.