2012-07-21 104 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

相關問題