2012-12-27 121 views
0

我已經建立了我的查詢正確它與所有,但有人無緣無故的錯誤回來不更新PDO查詢不更新

$database->updateAdmin(1, $_POST['user']); 

public function updateAdmin($status, $uid) { 
    $sql = 'UPDATE users SET admin = :status WHERE uid = :uid'; 
    $result = $this->pdo->prepare($sql); 
    $result->execute([ 
     ':status' => $status, 
     ':uid' => $uid 
    ]); 
} 

<select name="user"> 
     <option value="1">John</option> 
    <option value="2">Sarah</option> 
</select> 

管理域ENUM(「0」,「1」)

這就是它是如何設置它只是說它確定但從未更新,任何人都可以發現,也許爲什麼?

+0

您是否在檢查錯誤?你的PDO對象是否設置爲拋出異常? –

回答

1

爲了使它出現錯誤,你必須要求他們。
您是否將您的PDO設置爲例外模式?

但是,可能有一個硬派的技巧。
您必須將您的1作爲字符串綁定,而不是數字。否則它不會更新。
我對數組的自動綁定還不是很熟悉,但很可能PDO會做一些魔術並將您的1綁定爲數字。所以,我會手動綁定它,以確保。

+0

需要什麼魔術?在'$ database-> updateAdmin(1,$ _POST ['user']);'它已經是一個數字 – eis

+0

這是不正確的。你可以綁定整數和字符串。 –

+0

['execute'](http://us.php.net/manual/en/pdostatement.execute.php)中傳遞的所有參數都被視爲'PDO :: PARAM_STR'。如果你想要非字符串綁定,你需要明確地綁定它們。 – DCoder