PDO MySQL: Inserir várias linhas em uma consulta
Olá eu estou fazendo uma aula para fazer várias inserções no pdo.
É algo assim
<code>INSERT INTO $table (key1,key2,key3,etc) VALUE (value1,value2,value3,etc), (value1,value2,value3,etc), (value1,value2,value3,etc) </code>
Depois de pesquisar, descobri que tenho que construir algo como
<code>INSERT INTO $table (key1,key2,key3,etc) VALUE (:key1,:key2,:key3,etc), (:key1,:key2,:key3,etc), (:key1,:key2,:key3,etc) </code>
então execute com este$this->execute($data);
Onde$data
é
<code> 0 => array 'key1' => 'value1' 'key2' => 'value2' 'key3' => 'value3' 1 => array 'key1' => 'value1' 'key2' => 'value2' 'key3' => 'value3' etc </code>
o problema é que eu ainda recebo um erroArray to string conversion
em$insert->execute($data);
como posso consertar isso?
aqui está um trecho do que estou fazendo.
<code>public function multipleInsert($table, $data = array()) { # INSERT (name) VALUE (value),(value) if (count($data) > 1) { $fieldnames = array_keys($data[0]); $count_inserts = count(array_values($data)); $count_values = count(array_values($data[0])); # array(????) untill x from first data for($i = 0; $i < $count_values; $i++) { $placeholder[] = '?'; } # array((????),(????),(????)) for query for ($i=0; $i < $count_inserts; $i++) { $placeholders[] = '('. implode(',',$placeholder) . ')'; } $query = 'INSERT INTO '. $table; $query .= '(`'. implode('`, `', $fieldnames) .'`)'; $query .= ' VALUES '. implode(', ', $placeholders); $insert = $this->start->prepare($query); $i = 1; foreach($data as $item) { foreach ($item as $key => $value) { $insert->bindParam($i++, $item[$key]); } } echo $query; $insert->execute(); $return['status'] = true; $return['lastid'] = $this->start->lastInsertId(); return $return; } else { die('$data is less then two array, use single insert instead.'); } } </code>