[英]PHP PDO statement throwing fatal error
我有一個函數引發關於語法問題的異常錯誤。 看一看。
public static function authenticate($_user, $_pass)
{
$sql = 'SELECT password, key
FROM users
WHERE username = ' . $_user;
$stm = Db::init()->prepare($sql);
if ($stm->execute())
return $stm->fetch(PDO::FETCH_ASSOC);
}
致命錯誤:消息為“ SQLSTATE [42000]”的未捕獲的異常“ PDOException”:語法錯誤或訪問沖突:1064 SQL語法有錯誤; 檢查與您的MySQL服務器版本對應的手冊以獲取正確的語法,以在/class.php:111中的“第1行的FROM FROM users WHERE username = testuser1'附近”使用
堆棧跟蹤:
#0 /class.php(111):PDOStatement-> execute()
#1 /class.php(118):密碼:: authenticate('testuser1','test')
#111 {main}在第111行的/class.php中拋出
關於這意味着什么的任何想法?
key
是sql中的保留字。 在查詢中用反引號將其引起來。 像這樣:
public static function authenticate($_user, $_pass)
{
$sql = 'SELECT password, `key`
FROM users
WHERE username = ' . $_user;
$stm = Db::init()->prepare($sql);
if ($stm->execute())
return $stm->fetch(PDO::FETCH_ASSOC);
}
順便說一句:您的代碼中存在一個SQL注入漏洞。 使用參數化查詢綁定$_user
的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.