这行代码有什么问题?获取我的查询错误
$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