如果mysqli prepared语句中的php中num_rows=0,则显示消息
我在尝试从php中的预处理语句查询中获取行数时遇到问题,我的查询如下所示:如果mysqli prepared语句中的php中num_rows=0,则显示消息,php,mysqli,prepared-statement,Php,Mysqli,Prepared Statement,我在尝试从php中的预处理语句查询中获取行数时遇到问题,我的查询如下所示: $DBH = getDBH(); $stmt = $DBH->prepare("SELECT info FROM list WHERE tag = ?"); $stmt->bind_param("s",$tag); $stmt->execute(); $stmt->bind_result($information); 我基本上只是想说,如果没有结果返回显示“no result returned”
$DBH = getDBH();
$stmt = $DBH->prepare("SELECT info FROM list WHERE tag = ?");
$stmt->bind_param("s",$tag);
$stmt->execute();
$stmt->bind_result($information);
我基本上只是想说,如果没有结果返回显示“no result returned”,有人能帮忙吗?我不认识您正在使用的类,但通常我会这样做:
$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.
}
我不认识您正在使用的类,但通常我会这样做:
$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.
}
首先需要使用
$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);
首先需要使用
$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);
他显然是在使用mysqli作为后端,而不是普通的mysql。不过你说得对,getDBH()是一个手工制作的类,没有人知道它是methodswell,我遇到的问题是mysql_num_rows不起作用,我使用的是mysqli编写的语句,谢谢。这只是初始化一个新连接,我只是想找到一种方法,如果返回任何行,如果返回了行,则显示信息;如果没有返回行,则显示不同的消息。是的,这取决于您需要执行的操作,但mysqli是一种方法,而prepared语句是避免注入的方法。@jeffkee,您可能希望改为查看PDO。它与DBMS无关,根据我的经验,工作起来更容易一些(像这样的问题更少)。他显然是在使用mysqli作为后端,而不是普通的mysql。不过你说得对,getDBH()是一个手工制作的类,没有人知道它是methodswell,我遇到的问题是mysql_num_rows不起作用,我使用的是mysqli编写的语句,谢谢。这只是初始化一个新连接,我只是想找到一种方法,如果返回任何行,如果返回了行,则显示信息;如果没有返回行,则显示不同的消息。是的,这取决于您需要执行的操作,但mysqli是一种方法,而prepared语句是避免注入的方法。@jeffkee,您可能希望改为查看PDO。它与DBMS无关,根据我的经验,它更容易工作(像这样的问题更少)。getDBH只是初始化连接,它不做任何其他事情。当我使用$stmt->num_rows时,我只是尝试获取返回的行数;它总是返回0。getDBH只是初始化连接,它不做任何其他事情;它总是返回0.5,非常感谢。非常简单的修复,我不知道我必须先存储结果。再次感谢。太棒了,非常感谢。非常简单的修复,我不知道我必须先存储结果。再次感谢。