2012-01-26 128 views
-1

我有這個PHP腳本:PHP MySQL查詢被執行兩次

$q = $dbc -> prepare(" 
    UPDATE accounts 
    SET motivation = motivation-10 
    WHERE id = ? 
"); 

$q -> execute(array($user['id'])); 

但它減去20,而不是十。當我在mysql中運行查詢時,它只會減去十個。爲什麼?

+0

更多輸入請,我懷疑你只有這個在你的PHP?頁面,因爲沒有PHP標籤以及'$ dbc'永遠不會被初始化等等,所以更多的上下文會很好。你如何調用腳本等 – stryba

+0

你必須超過這個,因爲這段代碼沒有設置PDO對象或連接... –

+0

是的我有,但這一切都在一個需求?沒有其他的東西呢? – cgwebprojects

回答

0

您的$ q - > execute方法正在做一些愚蠢的事!查看或

可能是其在一個循環或

您有此相同的多個請求!

0

你準備好的陳述看起來很好。它應該從動機欄中的當前值中扣除10。

如果20被扣除,你很可能會調用它兩次。

確保您只調用​​一次,如果您從網頁調用此設置,請確保您沒有按兩次。

0

當您在同一頁面中編寫PHP代碼和html代碼時,就會出現問題。如果您是第一次單擊提交按鈕插入,那麼頁面將刷新。是嗎?然後再次執行代碼..解決方法是在執行形式向我們提供數據的語句之前檢查條件。

if($_POST['txtlocation']!='') 
{ 
$sql = "INSERT INTO location(description) VALUES (:location)"; 
$stmt = $pdo->prepare($sql); 
$stmt->bindParam(':location', $_POST['txtlocation'], PDO::PARAM_STR); 
$stmt->execute(); 
}