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