PDO具有命名params的参数编号无效


PDO Invalid parameter number with named params?

编辑正如下面有人指出的,这是一个拼写错误,请忽略这一点,完整的用户错误


我觉得这有点奇怪,我觉得:param可以多次使用?

类别:

Final Class StageMapper Extends DataMapper
{
    public static function push($vendor)
    {
        $st = self::$db->prepare(
            'UPDATE footable SET site = :site, hash = :hash WHERE site = :site AND id = :id'
        );
        $st->execute(array(
            ':site'         => $vendor->s,
            ':hash'         => $vendor->h,
            ':uid'          => $vendor->i,
        ));
    }
}

输入:

// some rand vals
$vendor = (object) array (
  's'   => 'domain.com',
  'h'   => '180b35',
  'i'   => '1',
);
DataMapper::init();          // kick off a new connection via PDO
StageMapper::push($vendor);  // do stuff =P

这似乎很奇怪,它会给我这个错误,因为我们已经绑定到:site(我认为这就是抛出它的原因)

有人能向我解释一下我的绑定参数是怎么回事吗?

有一个拼写错误。:uid绑定,:id标记。

如果使用模拟准备,则可以多次使用命名参数。如果你使用"真正的"准备,你就不能。