这行代码有什么问题?
$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
答案 0 :(得分:4)
您的解决方案容易受到SQL注入攻击;如果我的cookie的用户ID是1; drop table follow; --
会怎样?告别你的关注表。
您至少需要使用mysql_real_escape_string()
(编辑:并在插值变量周围加上引号),有关详细信息,请参阅this page。但实际上你想要prepared statements。
答案 1 :(得分:3)
您不能在字符串中使用带引号的数组键。您必须使用{...}
语法,或删除引号(这将在外部发出警告字符串,但您知道,PHP。)
每个坚持使用mysql_real_escape_string
的人都是正确的,每个坚持使用PDO准备语句的人都更为正确。
答案 2 :(得分:-2)
试试这个
$query= "SELECT status FROM follow WHERE user_id1 = {$_COOKIE['user_id']}
AND user_id2 = {$user_id}";
这行代码有什么问题?
基本上,你有一个数组$COOKIE
,我认为它是你正在访问的$_COOKIE
,但由于它被封装在一个字符串中,你需要帮助PHP的解析器指出是的,它实际上是一个变量(数组)而不是字符串的一部分。为此,在“字符串”中使用变量时,应将变量封装在{$like_this}
;
答案 3 :(得分:-4)
单引号分隔数组键导致此错误
要么在字符串中省略这些引号,要么使用花括号。
您还必须确保进入查询的值具有正确的格式
$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";