php - 准备好的语句mysqli不返回行

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

最佳答案

从评论延伸:

你必须使用 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();

关于php - 准备好的语句mysqli不返回行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12946639/

相关文章:

php - MYSQL结合两个查询来获得功能

php - PHP中简单数字的float到int改变值

mysql - 创建一个列,计算同一个表中某个值在另一列上出现的次数 - MySQL

php - 如何使用 anchor 标记在 laravel 中路由?

php - 如何限制 HTML 中的列数

php - 验证电子邮件尚未注册 PHP Mysql

php - 如何在 IntelliJ 中执行 web 应用程序的 php 脚本?

php - 在外部PHP文件中使用PDO连接mysql数据库

php - 将多个上传文件的文件名存储到 MySQL 数据库中

php - PHP中的http_response_code()