2012-10-28 141 views
0

我試圖將我的舊的PHP SQL腳本到PDO,但它使用戶點設置爲0,而不是增加+15PDO更新設置字段值爲0?

繼承人的原

<?php 

session_start(); 
$db = mysqli_connect("host", "username", "password", "dbname"); 
$username = $_SESSION['username']; 
mysqli_query($db, "UPDATE login_users SET Points=Points+15 WHERE username='$username'"); 


?> 

這裏是PDO聲明我試圖創建。我的語法錯了嗎?

<?php 

session_start(); 
$db = new PDO('mysql:host;dbname=dbname;charset=UTF-8', 'username', 'password'); 
$username = $_SESSION['username']; 
$Points = $db->exec("UPDATE login_users SET Points='Points+15' WHERE username='$username'"); 


?> 
+2

同樣的,對動態輸入的,而不是(轉義!)串插中使用綁定變量。 – DCoder

+0

謝謝你提及! –

回答

4

'Points + 15'是一個文字。你需要它沒有單引號。

​​

更重要的是,以參數化的優勢:

$Points = $db->prepare("UPDATE login_users SET Points=Points+15 WHERE username=?"); 
$Points->execute(array($username)) 
+0

作爲一個旁註,你也可以指出如何通過'$ username'作爲參數,使查詢變得更加有效。會話可能變得污染,然後SQL注入成爲可能。防止這一點。 – hakre

+0

@hakre真實,只是更新了我的答案。 –

+0

@Asad哇!我從中學到了很多東西。非常感謝! –

2

擺脫這些報價

SET Points='Points+15' WHERE 
+0

感謝您的貢獻! –