0

我有这个:

$result = mysql_query("SELECT * FROM animals WHERE hand= " .$_SESSION['SESS_HAND']. ");

但总是显示“解析错误:解析错误,期待T_STRING' orT_VARIABLE' 或 `T_NUM_STRING”

4

5 回答 5

4

始终转义字符串变量:

$result = mysql_query("SELECT * FROM animals WHERE hand= '" .
mysql_real_escape_string($_SESSION['SESS_HAND']). "'");
于 2012-04-12T16:25:01.240 回答
2

您的查询不起作用的原因是因为您的 WHERE 的值不在单引号之间。

编辑:昆汀也是对的,你没有关闭最后一个括号的引号;)。

这将使查询工作:

$result = mysql_query("SELECT * FROM animals WHERE hand= '" .$_SESSION['SESS_HAND']. "'");

但就像 a1ex07 指出的那样,你应该总是逃避变量!上面的查询容易受到 MySQL 注入的影响。下面的示例通过转义变量显示了正确的方法,在我看来是更好的可读代码;)。

$query = "SELECT * FROM `animals` 
WHERE `hand` = '" .mysql_real_escape_string($_SESSION['SESS_HAND']). "'";

mysql_query($query);
于 2012-04-12T16:36:01.250 回答
0

尝试:

$result = "SELECT * FROM animals WHERE hand= " . $_SESSION['SESS_HAND'];

mysql_query($result);

此外,通过这样做,您可以调试您的查询,并通过编写以下代码准确查看它在 SQL 中所做的事情:

echo $result;
于 2012-04-12T16:25:04.243 回答
0

它给出了该错误消息,因为您永远不会完成您尝试在会话数据之后附加的字符串:");

不过,不要通过将字符串混合在一起来构建 SQL 查询。使用准备好的语句和参数化查询

于 2012-04-12T16:38:49.770 回答
-1

问题:

$result = mysql_query("SELECT * FROM animals WHERE hand= " .$_SESSION['SESS_HAND']. ");

解决方案:

if (!$sessHand = mysql_real_escape_string($_SESSION['SESS_HAND']))
{ 
echo "There was a error: " . mysql_error();
}
else
{ $result = mysql_query("SELECT * FROM animals WHERE hand=$sessHand") }
于 2012-10-31T12:03:09.430 回答