-1

这行代码有什么问题?

$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

4

4 回答 4

4

您的解决方案容易受到 SQL 注入的影响;如果我的 cookie 的用户 ID 是 会发生什么1; drop table follow; --?告别您的追随桌。

mysql_real_escape_string()您至少需要使用(编辑:并在插值变量周围加上引号),有关详细信息,请参阅此页面。但你真的想要准备好的陈述

于 2012-04-25T18:44:22.943 回答
3

您不能在字符串中使用带引号的数组键。你必须使用语法,或者去掉引号(这会在字符串之外{...}发出警告,但你知道,PHP。)

每个坚持你使用的人mysql_real_escape_string都是正确的,每个坚持你使用 PDO 的人都更正确。

于 2012-04-25T18:56:51.200 回答
-2

尝试这个

$query= "SELECT status FROM follow WHERE user_id1 = {$_COOKIE['user_id']}
AND user_id2 = {$user_id}";

这行代码有什么问题?

基本上,你有一个 array $COOKIE,我相信$_COOKIE它是你正在访问的,但由于它被封装在一个字符串中,你需要帮助 PHP 的解析器表明是的,它实际上是一个变量(数组)而不是部分的字符串。为此,您应该{$like_this}在“字符串”中使用变量时将它们封装起来;

于 2012-04-25T17:28:32.883 回答
-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";
于 2012-04-25T18:52:42.960 回答