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

时间:2012-10-18 03:29:53

标签: 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>';

1 个答案:

答案 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();