我已经查看了有关在PDO中插入数组的所有其他帖子,但一直无法确切知道如何执行此操作。我想接受这个:
$images_ar =
Array
(
[0] => Array
(
[0] => 100
[1] => Lips
[2] => 50
[3] => 50
[4] => 127
[5] => 257
[6] => 9998
[7] => 70
[8] => xxx
)
[1] => Array
(
[0] => 103
[1] => Ball
[2] => 117
[3] => 114
[4] => 128
[5] => 44
[6] => 9997
[7] => 70
[8] => xxx
)
[2] => Array
(
[0] => 104
[1] => Sun
[2] => 94
[3] => 91
[4] => 48
[5] => 277
[6] => 9996
[7] => 70
[8] => xxx
)
)
执行PDO插入,其中[0] = image_id和[9] = avatar_id。
利用其他帖子,到目前为止,我有这个:
$images_ar = array_chunk($ar, 9);
$handler->beginTransaction();
foreach($images_ar as $row){
$question_marks[] = "('',?,?,?,?,?,?,?,?)";
}
$query = $handler->prepare ("INSERT INTO avatars (ID, img_id, title, width, height, top, left, zindex, userid, avatar_id) VALUES " . implode(',', $question_marks);
$query->execute($ar);
$handler->commit();
错误:
致命错误:带有消息'SQLSTATE [42000]的未捕获异常'PDOException':语法错误或访问冲突:1064 SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,以便在'left,zindex,userid,avatar_id)附近使用正确的语法('',?,?,?,?,?,?,?,?),(' ',?,?,?,?,?,?,?,?'在第1行'... save.php:52
堆栈跟踪:0 ... \ save.php(52):PDO-> prepare('INSERT INTO ava ...')
1 {主}
在 52
我是在正确的轨道上吗?
谢谢你们! = d
答案 0 :(得分:1)
我可以通过使用array_combine()
方法更改密钥来使其工作。
最终代码是:
$images_ar = array_chunk($ar, 9);
$keys = array('img_id', 'title', 'width', 'height', 'top', 'lef', 'zindex', 'userid', 'avatar_id');
foreach ($images_ar as $row) {
$list[] = array_combine($keys, array_values($row));
}
$handler->beginTransaction();
foreach($images_ar as $row){
$question_marks[] = "(DEFAULT,?,?,?,?,?,?,?,?,?)";
}
$query = $handler->prepare ("INSERT INTO avatars (ID, img_id, title, width, height, top, lef, zindex, userid, avatar_id) VALUES " . implode(',', $question_marks));
$query->execute($ar);
$handler->commit();