這行代碼有什麼問題?獲取我的查詢錯誤
$query= "SELECT status FROM follow WHERE user_id1= $COOKIE['user_id'] AND user_id2=
$user_id";
我不斷收到錯誤消息:
解析錯誤:語法錯誤,意想不到的T_ENCAPSED_AND_WHITESPACE,期待T_STRING或T_VARIABLE或T_NUM_STRING
這行代碼有什麼問題?獲取我的查詢錯誤
$query= "SELECT status FROM follow WHERE user_id1= $COOKIE['user_id'] AND user_id2=
$user_id";
我不斷收到錯誤消息:
解析錯誤:語法錯誤,意想不到的T_ENCAPSED_AND_WHITESPACE,期待T_STRING或T_VARIABLE或T_NUM_STRING
試試這個
$query= "SELECT status FROM follow WHERE user_id1 = {$_COOKIE['user_id']}
AND user_id2 = {$user_id}";
What is wrong with this line of code?
基本上,你有一個陣列$COOKIE
,我相信這是我假設你正在訪問的是$_COOKIE
,但由於它被封裝在一個字符串中,所以你需要幫助PHP的解析器指出是的,它實際上是一個變量(數組),而不是字符串的一部分。要做到這一點,當在「字符串」中使用它們時,應該將變量封裝在{$like_this}
左右;
您的解決方案容易受到SQL注入的影響;如果我的cookie的用戶ID是1; drop table follow; --
,會發生什麼情況?告別你的追隨表。
您至少需要使用mysql_real_escape_string()
(編輯:並在插值變量周圍加引號),詳情請參閱this page。但你真的想要prepared statements。
單引號分隔數組鍵導致此錯誤
或者省略字符串中的這些引號或使用大括號。
你也必須確保你的價值觀是進入查詢正確的格式
$user_id1 = (int)$COOKIE['user_id'];
$user_id2 = (int)$user_id;
$query="SELECT status FROM follow WHERE user_id1=$user_id1 AND user_id2=$user_id2";
不能使用引號的字符串數組裏面的鍵。您必須使用{...}
語法,或跌落引號(這將發出一個警告外一個字符串,但你知道,PHP)
每個人都堅持使用mysql_real_escape_string
是正確的,每個人都堅持使用PDO與準備好的聲明遠遠更正確。
大家都堅持使用mysql_real_escape_string是IN-friggin正確的並且沒有任何線索。 – 2012-04-25 18:59:18
試試'echo $ query'。它可能會提示問題是什麼。 – 2012-04-25 17:31:10
你聽說過小鮑比桌嗎? http://bobby-tables.com/ – 2012-04-25 18:45:12
「這行代碼有什麼問題?」?哦,非常,非常非常。 – Andrew 2012-04-26 21:11:44