准备好的语句 Mysql 不工作

Prepared Statements Mysql not working

我正在尝试使用准备好的语句来 select 来自 table 的数据,如下所示。这种方法不起作用。

    $sql = "SELECT * FROM `usrs` WHERE `username` = ? ";
    $statement = $this->conn->prepare($sql);
    if (!statement)
    {
        throw new Exception($statement->error);
    }
    $statement->bind_param("s",$username);
    $returnValue = $statement->execute();
    return $returnValue;

$sql 应采用以下格式。

$sql = "SELECT * FROM `usrs` WHERE `username` = 'username' ";

但是上面的代码没有在用户名周围放置单引号 ' '

我需要将用户名放在两个单引号 ' ' 之间,如图所示。如果我只使用

$sql = "SELECT * FROM `usrs` WHERE `username` = username "

它不起作用。

关于如何做到这一点的任何建议。

仔细阅读this

bool mysqli_stmt::execute ( void )

这意味着它 returns boolean - 这不是可用的对象或数组。

您必须获取声明。

修复方法如下:

$sql = "SELECT * FROM `usrs` WHERE `username` = ? LIMIT 1";
$statement = $this->conn->prepare($sql);
$statement->bind_param("s",$username);
if ($statement->execute()) {
  $result = $statement->get_result();
  return $result->fetch_assoc();
}
return null;

P.S。谢谢@Phil 在我的回答中修正了我的错误