准备好的语句Mysql无法正常工作

时间:2018-05-16 22:48:19

标签: php mysql prepared-statement

我正在尝试使用预准备语句从表中选择数据,如下所示。此方法不起作用。

94.192.0.0-94.195.255.255  
94.0.0.0-94.15.255.255  
93.96.0.0-93.96.255.255  

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

它不起作用。

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

1 个答案:

答案 0 :(得分:0)

仔细阅读this

  

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

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