2014-06-17 75 views
0

我有一个包含多个行的关联数组,像如下多行:MySQL的插入用PDO

Array 
(
    [0] => Array 
     (
      [ID] => 37 
      [category name] => Cell Phone 
     ) 

    [1] => Array 
     (
      [ID] => 38 
      [category name] => LED Light 
     ) 

等等...

我有以下功能,以将数据插入到我的数据库使用PDO。

function PDOBindArray($poStatement, $paArray){ 
    foreach ($paArray as $k=>$v){ 
    $poStatement->bindValue(':'.$k,$v); 
} 
    } 

,这里是我的插入语句:

$stmt = $conn->prepare("INSERT INTO subcategory (cb_category_id,subcategory_name) VALUES (:ID,:category name)"); 
PDOBindArray($stmt,$data); 
$stmt->execute(); 

我插入过程中出现以下错误:

非法参数编号:绑定变量的数量不匹配的令牌数量

我知道这是愚蠢的。但我无法找到它...

+0

':category name'应该是':category_name'并且在数组中相同。我们可以使用引号 – hjpotter92

+0

吗?我试了一下,有点不成功。我从外部来源获得这个数组,从csv文件转换。是否有其他方式 – user3737431

+0

'str_replace('','_',$ k)'? – hjpotter92

回答

0
$sql = "INSERT INTO subcategory (cb_category_id,subcategory_name) VALUES (?,?)"; 
$stmt = $conn->prepare($sql); 
foreach ($paArray as $v){ 
    $stmt->execute(array_values($v)); 
} 
+0

非常感谢。那就是诀窍:) – user3737431