2012-07-21 113 views
0

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

<?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

什么是执行的确切查询? – Arjan 2012-07-21 06:54:59

+0

由于这是一家“银行”,我认为他需要更新,但要增加当前的“金钱”数量。 – Novak 2012-07-21 06:56:49

回答

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

+0

感谢这工作。我注意到的一点是它取代了以前的值。无论如何要使它增加到现有的价值,可能使用更新而不是插入? – Sunden 2012-07-21 07:01:03

+0

是的,Sunden,使用[更新](http://dev.mysql.com/doc/refman/5.5/en/update.html) – cegfault 2012-07-21 07:02:10

+0

我已经更新了我的答案。 – 2012-07-21 07:03:57

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

相关问题