[英]Prepared Statements Mysql not working
我試圖使用准備好的語句從表中選擇數據,如下所示。 此方法不起作用。
$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 "
這是行不通的。
任何建議如何做到這一點。
請仔細閱讀以下內容 :
布爾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糾正了我在回答中的錯誤
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.