sql / php语法错误,意外T_ENCAPSED_AND_WHITESPACE,期待

时间:2012-11-28 20:23:40

标签: php syntax

myphp页面第16行出错了,是

$result = mysql_query("update Users set lat='$lat',lon='$lng' where username=$_SESSION['username']");

4 个答案:

答案 0 :(得分:0)

你需要在字符串内部使用花括号{}来返回数组部分:

$result = mysql_query("update Users set lat='$lat',lon='$lng' where username={$_SESSION['username']}");

注意:如前所述,您不应该使用mysql_query

答案 1 :(得分:0)

虽然这里不推荐使用mysql_ *函数,但查询错误是:

$result = mysql_query("update Users set lat='$lat',lon='$lng' where username=".$_SESSION['username']);

还要确保在查询中使用之前对输入进行清理:

答案 2 :(得分:0)

您忘记了所有需要的',并且忘记引用用户名值。而不是

$result = mysql_query("update Users set lat='$lat',lon='$lng' where username=$_SESSION['username']");

以更干净的方式做到这一点:

$result = mysql_query( "update Users set lat='$lat',lon='$lng' where username='" . $_SESSION['username'] . "'");

甚至更好:

$query = sprintf("update Users set lat='%s',lon='%s' where username=%s"), 
         $lat, $lng, $_SESSION['username']);
$result = mysql_query($query);

BTW:切换到MYSQLi或PDO,因为MYSQL扩展名已弃用,没有新代码可以触及它。

答案 3 :(得分:0)

您有多个问题,但错误与您使用double quoted string的变量扩展有关。

错误:

echo "$_SESSION['username']";

没有错误:

echo "{$_SESSION['username']}";

<强>备选方案:

echo "..." . $_SESSION['username'] . "...";
echo '...' . $_SESSION['username'] . '...';

阅读Strings上的文档,以确定如何处理字符串中的变量扩展。

我还建议您阅读SQL InjectionPDO