2012-12-27 119 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