簡體   English   中英

預備語句Mysql無法正常工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM