我的PDO批量插入准备查询不起作用,没有显示错误(PHP + PDO + MySQL)

时间:2013-08-05 13:53:47

标签: php mysql pdo prepared-statement bulkinsert

我正在尝试使用单个预准备语句插入多行,但我无法使其正常工作。

我创建了以下辅助方法:

// generate "(?, ?, ?, ?), (?, ?, ?, ?)" from cols and values
// to be used in a prepared statement
public function placeholders ($values, $cols) {
    $row = '('.implode(',', array_fill(0, count($cols), '?')).')';
    $place_holders = array_fill(0, count($values)/count($cols), $row);
    return implode(',', $place_holders);
}

// generate the "?" placeholders and make the PDO transaction
protected function insertInto ($table, array $cols, array $values) {
    $query = 'INSERT INTO `'.$table.'` (`'.implode('`,`', $cols).'`) VALUES '.$this->placeholders($values, $cols);
    return $this->makeTransaction($query, $values);
}

// prepare and execute a PDO transaction
protected function makeTransaction ($query, array $values=array()) {
    $this->pdo->beginTransaction();
    $q = $this->pdo->prepare($query);
    $q->execute($values);
    return $this->pdo->commit();
}

至于电话本身,这里是:

$this->insertInto('table', array('f_key', 'c2', 'c3'), $values);

我正在使用以下$ values数组:

$values = array(1, 'a', 'b', 2, 'c', 'd', ...);

现在数据没有进入表格,但同时我没有得到任何异常或错误。我在通话结束后尝试var_dump $this->pdo->errorInfo()但它也没有错误。有什么想法吗?

0 个答案:

没有答案