4

我有一些带有准备好的语句的 php 代码。它是通过 javascript 中的 Ajax 调用的。我确定在 accounts 表中有一个名为 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>';
4

1 回答 1

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();
于 2012-10-18T03:48:02.717 回答