このコード行は何が問題になっていますか?私の質問にエラーが発生しました
私は、エラーメッセージが出続ける$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-correctであり、手がかりがありません。 –
'echo $ query'を試してください。それは問題が何であるかのヒントを与えるかもしれません。 –
あなたはボビーテーブルのことを聞いたことがありますか? http://bobby-tables.com/ –
"このコード行には何が問題なのですか?"ああ、とても、非常に。 – Andrew