【问题标题】:Display Message if num_rows = 0 in php from mysqli prepared-statement [duplicate]如果来自mysqliprepared-statement的php中的num_rows = 0,则显示消息[重复]
【发布时间】:2011-03-28 07:27:12
【问题描述】:

我在尝试从 php 中的准备语句查询中获取行数时遇到问题,我的查询如下所示:

$DBH = getDBH();
$stmt = $DBH->prepare("SELECT info FROM list WHERE tag = ?");
$stmt->bind_param("s",$tag);
$stmt->execute();
$stmt->bind_result($information);

我基本上只是想说如果没有返回结果显示“没有返回结果”有人可以帮忙吗?

【问题讨论】:

  • getDBH 只是初始化连接,它没有做任何其他事情。
  • 我只是想获得返回的行数,当我使用 $stmt->num_rows;它总是返回 0。

标签: php mysqli prepared-statement


【解决方案1】:

您需要先使用$statement->store_result()。使用您的代码:

$DBH = getDBH();
$stmt = $DBH->prepare("SELECT info FROM list WHERE tag = ?");
$stmt->bind_param("s",$tag);
$stmt->execute();
$stmt->store_result();
$num_rows = $stmt->num_rows;
$stmt->bind_result($information);

【讨论】:

  • 太棒了,非常感谢。非常简单的修复,我不知道我必须先存储结果。再次感谢。
【解决方案2】:

我不认识您正在使用的课程,但通常我会这样做:

$sql = "SELECT * FROM dummy WHERE category=13";
$result = mysql_query($sql);
if(mysql_num_rows($result)>0) {
// execute for positive results
} else {
// execute for 0 rows returned.
}

【讨论】:

  • 他显然使用 mysqli 作为后端,而不是普通的 mysql。但是你说得对,getDBH() 是一个手工制作的类,没有人知道它的方法
  • 好吧,我遇到的问题是 mysql_num_rows 不起作用,我正在使用 mysqli 准备好的语句,不过谢谢。
  • 它只是初始化一个新连接,我只是在寻找一种方法来获取是否返回任何行,如果返回行显示信息,如果没有返回行,显示不同的消息跨度>
  • 是的,这取决于你需要做什么,但是 mysqli 是要走的路,准备好的语句是避免注入的路。
  • @jeffkee,你可能想看看 PDO。它与 DBMS 无关,根据我的经验,它更容易开始工作(这样的问题更少)。
【解决方案3】:
$sql = "SELECT * FROM dummy WHERE category=13";
$result = mysqli_query($link, $sql);
$numrows=mysqli_num_rows($result)
if($numrows>0) {
// execute for positive results
} else {
// execute for 0 rows returned.
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-28
    • 2016-12-19
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多