准备好的语句mysqli没有返回行

mar*_*are 3 php sql mysqli prepared-statement

我有一些准备好的语句的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>';
Run Code Online (Sandbox Code Playgroud)

Pas*_*rby 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();
Run Code Online (Sandbox Code Playgroud)