我有一些准备好的语句的PHP代码。它在javascript中通过Ajax调用。我确信在帐户表中有一个名为mark(无上限)的帐户,但是当我将$ _POST ['query']设置为m时,它会发现$ stmt-> num_rows === 0为真。没有错误可以看到,它只是不起作用!正如您所知,它将内容回显到表中。我在phpMyAdmin中尝试了这个查询:SELECT username FROM accounts WHERE username LIKE'%m%',它运行正常。我创建了这个代码来搜索mysql数据库中的用户名。如果您想知道,$ conn是包含文件中定义的有效mysqli对象。
<?php
require_once('./include.php');
$stmt=$conn->stmt_init();
$stmt->prepare('SELECT username FROM accounts WHERE username LIKE ?');
$compquery='%'.$_POST['query'].'%';
$stmt->bind_param('s',$compquery);
$stmt->execute();
echo '<tr><td>';
if($stmt->num_rows!==0){
$stmt->bind_result($name);
while($stmt->fetch()){
echo "$name</td></tr><tr><td>";
}
echo '</td></tr>';
}
else
echo 'No Results Found</td></tr>';
答案 0 :(得分:6)
延伸评论:
您必须先使用mysql_stmt::store_result()
才能使用mysqli_stmt::num_rows
:
$stmt=$conn->stmt_init();
$stmt->prepare('SELECT username FROM accounts WHERE username LIKE ?');
$compquery='%'.$_POST['query'].'%';
$stmt->bind_param('s',$compquery);
$stmt->execute();
$stmt->store_result();