您的SQL语法有错误;校验

时间:2012-07-21 06:52:10

标签: php mysql

我一直收到此错误:您的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>

2 个答案:

答案 0 :(得分: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()。 阅读this

答案 1 :(得分: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