myphp ページの 16 行目にエラーが発生しました。
$result = mysql_query("update Users set lat='$lat',lon='$lng' where username=$_SESSION['username']");
mysql_* 関数は廃止されていますが、クエリのエラーは次のとおりです。
$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']");
これをよりクリーンな方法で行います。
$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に切り替えてください。新しいコードはそれに触れないでください。
複数の問題がありますが、エラーは二重引用符で囲まれた文字列を使用した変数展開に関連しています。
エラー:
echo "$_SESSION['username']";
エラーなし:
echo "{$_SESSION['username']}";
代替案:
echo "..." . $_SESSION['username'] . "...";
echo '...' . $_SESSION['username'] . '...';
文字列のドキュメントを読んで、文字列の変数展開をどのように処理するかを決定してください。
SQL インジェクションとPDOについても読むことをお勧めします。
{}
配列部分を返すには、文字列内に中括弧が必要です。
$result = mysql_query("update Users set lat='$lat',lon='$lng' where username={$_SESSION['username']}");
注:既に述べたように、を使用しないでくださいmysql_query
。