我正在尝试获取数据库中的行数。如果行数大于0,则脚本需要回显<p>1 or more</p>
如果行数为0,则脚本应回显<p>0</p>
。
但脚本无效。
当行数为1时,我得到<p>1 or more</p>
。当行数为0时,我仍然得到<p>1 or more</p>
有人知道什么是错的以及我如何解决它?
这是我的剧本:
$sql = "SELECT id FROM table WHERE status='1' ";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "<p>1 or more</p>";
}
} else {
echo "<p>0</p>";
}
$conn->close();
答案 0 :(得分:0)
如果你使用mysqli而不是num_rows应该可以工作,但是如果你使用的是预处理语句,这将无效。
如果您不打印从表中获得的结果,则无需获取表。如果您的查询成功,则num_rows将起作用。如果存在数组而不是num_row,则$result
上的print_r将起作用。否则尝试使您的查询可执行。
$sql = "SELECT id FROM table WHERE status='1' ";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "<p>1 or more</p>";
} else {
echo "<p>0</p>";
}
$conn->close();
我建议你使用预备语句阅读更多关于预备语句的内容 Here
答案 1 :(得分:0)
您的代码看起来不错。只需尝试回显结果即可准确了解显示的结果数量。我怀疑你的结果是检索0结果。
请参阅W3教程here
$sql = "your query here";
$result = mysqli_query($conn, $sql);
if(mysqli_num_rows($result) > 0) {
echo "1 or more";
} else {
echo "0";
}
答案 2 :(得分:0)
第一:如果query
执行failed
表示它将返回简单的boolean
值false
,这样您就无法获得num_rows
1}}来自Boolean
值。
以下代码可以帮助您。
$sql = "SELECT id FROM table WHERE status='1' ";
if($result = $conn->query($sql))
{
if ($result->num_rows > 0)
{
echo "row count is :".$result->num_rows;
}
else
{
echo "query execution success but there is no match result ";
}
}
else
{
echo "query execution failed";
echo $conn->error;
}
注意:在您的查询中,您需要指定正确的table name
而不是table key word
。
"SELECT id FROM table_name WHERE status='1' "