预备语句Mysql无法正常工作

艾哈迈德

我试图使用准备好的语句从表中选择数据,如下所示。此方法不起作用。

    $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 "

这没用。

任何建议如何做到这一点。

num8er

仔细阅读以下内容

布尔mysqli_stmt :: execute(void)

这意味着它返回布尔值-这不是可用的对象或数组。

您必须获取该语句。

解决方法:

$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;

PS谢谢@Phil纠正了我在回答中的错误

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章