0

我不断收到此错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'WHERE username = 'username' VALUES ('value')' 附近使用正确的语法。代码应该采用登录用户输入的值表单,然后将该值插入到表的货币列中。

 <?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 Injection的影响,因此您可能希望使用 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);

但是,当然,我假设你想做一个INSERT而不是UPDATE

于 2012-07-21T06:59:21.613 回答