-5

myphp ページの 16 行目にエラーが発生しました。

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

4 に答える 4

0

mysql_* 関数は廃止されていますが、クエリのエラーは次のとおりです。

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

また、クエリで使用する前に、入力がサニタイズされていることを確認してください。

于 2012-11-28T20:27:44.877 に答える
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);

ところで:MYSQL拡張機能は非推奨であるため、MYSQLiまたはPDOに切り替えてください。新しいコードはそれに触れないでください。

于 2012-11-28T20:28:27.077 に答える
0

複数の問題がありますが、エラーは二重引用符で囲まれた文字列を使用した変数展開に関連しています。

エラー:

echo "$_SESSION['username']";

エラーなし:

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

代替案:

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

文字列のドキュメントを読んで、文字の変数展開をどのように処理するかを決定してください。

SQL インジェクションPDOについても読むことをお勧めします。

于 2012-11-28T20:29:09.920 に答える
0

{}配列部分を返すには、文字列内に中括弧が必要です。

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

注:既に述べたように、を使用しないでくださいmysql_query

于 2012-11-28T20:26:05.373 に答える