0

このエラーが発生し続けます: SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルを参照して、1 行目の 'WHERE username = 'username' VALUES ('value')' の近くで使用する正しい構文を確認してください。コードは、ログインしているユーザーが入力した値を取ることになっています。フォームを作成し、その値をテーブルの money 列に挿入します。

 <?php include("auth.php");?>

 <?php

 if(isset($_POST['submit']))
 {


 $getmoney = @mysql_query("INSERT INTO players (money) WHERE username = 
'".$_SESSION['username']."' VALUES ('$_POST[amount]')")
 or die("Error: ".mysql_error());

echo '
<div style="
  top: 395;
  left: 99;
  position: absolute;
  z-index: 1;
  visibility: show;">
 Money Received.
 </div>
 ';
  }
  ?>

  </head>
  <body>
  <p>Bank</p>
  Enter amount of money to recieve.<br>
  <form action="bank.php" method="post">
  <table border=2>
  <tr>
  <td>Amount to Receive:</td><td><input type="text" name="amount" size="20px"></input>    
  </td>
  </tr>
  </table>
  <input type="submit" name="submit" value="Get Money"></input>
  </form><br><br>
<hr size=2>
<?php include("footer.php");?>
  </body>
  </html>
4

2 に答える 2

3

クエリ構文が間違っています。

@mysql_query("INSERT INTO players (money) VALUES (".$_POST[amount].") WHERE username = '".$_SESSION['username']."'";)

構文

INSERT INTO table_name(field1, field2...) VALUES (value1, value2,...) WHERE CONDITION

編集:値を更新し たいので、(更新クエリ)

@mysql_query("UPDATE players SET money = money+".$_POST[amount]." WHERE username = '".$_SESSION['username']."'";)

また、クエリはSQL インジェクションの影響を受けやすいため、PDO/MySQLi を使用するか、少なくともmysql_real_escape_string()ユーザーから渡されるすべての値を呼び出します。これを読んでください。

于 2012-07-21T06:55:06.917 に答える
1

次の SQL 呼び出しを実行しようとしています:

"INSERT INTO players (money) WHERE username = 
'".$_SESSION['username']."' VALUES ('$_POST[amount]')"

これは有効な MySQL クエリではありません。そしてそれは悪いPHPです。おそらくこれを行うつもりでした:

"INSERT INTO players(username,money) VALUES
    ('".$_SESSION['username']."','".$_POST['amount']."')"

実際、これは安全ではないため、PHP を次のようにしたいと思うでしょう。

<?php
    $usr = mysql_real_escape_string($_SESSION['username']);
    $amt = mysql_real_escape_string($_POST['amount']);
    $sql = "INSERT INTO players(username,money) VALUES ('$usr','$amt')";
    $getmoney = @mysql_query($sql);

しかし、もちろん、 UPDATEではなくINSERTを実行したいと考えています。

于 2012-07-21T06:59:21.613 に答える