可能是一个愚蠢的问题。我有以下代码:
while ($stmt -> fetch()) {
echo "<p><strong>" .$name. "</strong><br />" .$comment. "</p>";
}
如果$ stmt - &gt;我只想执行。 fetch()返回至少一行(这是一个SELECT查询)..但是如果我这样做
if ($stmt -> fetch())
它已经执行了一次,我想避免这种情况。任何线索?
提前致谢。
答案 0 :(得分:8)
http://php.net/manual/en/mysqli-stmt.num-rows.php
尝试使用$stmt->num_rows > 0
$stmt->store_result();
if( $stmt->num_rows > 0 )
{
while( $stmt->fetch() ) {
echo "<p><strong>" .$name. "</strong><br />" .$comment. "</p>";
}
}
为什么mysqli_result
有一个fetchAll
函数而mysqli_stmt
没有....我不知道。
更长,但可能有效
$result = $stmt->fetch();
if( !empty( $result )
{
do
{
echo "<p><strong>" .$name. "</strong><br />" .$comment. "</p>";
} while( $result = $stmt->fetch() );
}
答案 1 :(得分:2)
我认为你必须至少一次查询数据库以获得计数。
答案 2 :(得分:0)
致电
while( $stmt->fetch() ) {
// do stuff
}
您正在进行正确的检查,do stuff
部分仅在有多个结果的情况下才会出现。所以你已经做了你需要做的一切。
即。只有当echo
大于0时才会出现numRows
。
答案 3 :(得分:-2)
rowCount()
返回受DELETE,INSERT或UPDATE语句影响的行数。
<?php
/* Delete all rows from the FRUIT table */
$stmt= $dbh->prepare('DELETE FROM fruit');
$stmt->execute();
/* Return number of rows that were deleted */
$count = $stmt->rowCount();
print("Deleted $count rows.\n");
?>
以上示例将输出:
Deleted 9 rows.