【问题标题】:PDO not executing statementPDO 不执行语句
【发布时间】:2016-04-18 07:08:22
【问题描述】:

我有一个简单的方法不能正常工作 - 想使用准备好的语句,但不知何故它没有执行;相反,原始查询工作得很好。

可能是什么问题?我应该将一些额外的参数传递给 pdo 方法吗?

$_POST['sequence'] = [
    0 => 2,
    1 => 1
];

if (!empty($_POST['sequence'])) {
    $query = '
        UPDATE '.$this->db->backtick($this->controller->table).'
        SET `sequence` = CASE `id`'
        ;

    foreach ($_POST['sequence'] as $sequence => $id) {
        $values[':id'.$id] = $id;
        $values[':sequence'.$sequence] = $sequence;
        $query .= ' WHEN :id'.$id.' THEN :sequence'.$sequence;
    }

    $values[':ids'] = implode(',', array_values($_POST['sequence']));

    $query .= ' END WHERE `id` IN (:ids)';

    $statement = $this->db->handle->prepare($query);
    $statement->execute($values); //doesn't work

    //$query2 = str_replace(array_keys($values), array_values($values), $query);
    //$this->db->handle->query($query2); works
}

【问题讨论】:

  • 您是否收到错误消息?
  • @destination-data 没有,没有错误。
  • @Progrock 没有得到它。怎么可能在这里实现?
  • 我认为@Progrock 已经破解了它。您能否显示 $query 的值(对于循环中的任何交互)。我想你会发现 WHERE 子句中的 IN 语句是无效的。

标签: php mysql oop pdo


【解决方案1】:

不要在IN里面绑定参数

$query .= ' END WHERE `id` IN ('.implode(',', array_values($_POST['sequence'])).')';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 2019-09-16
    • 1970-01-01
    • 2014-06-10
    相关资源
    最近更新 更多