使用PDO使用关联数组插入数据

时间:2017-09-02 12:01:31

标签: php mysql arrays pdo

在您复制问题之前,我会阅读所有与我的问题有关系的答案。我正在尝试使用关联数组插入数据,例如

<?php 
$data = array(
         'fname'=>'joe',
         'lname'=>'sina'
);
foreach ($data as $key=>$value) {

}
?>

我想显示这样的数据

/*insert into tblname($key)values($value);
 finally the query will appear correctly format */
insert into tblname('fname','lname') values('joe','sina');

2 个答案:

答案 0 :(得分:3)

您无需在此处使用foreach。如果您只是准备并绑定查询,则可以将$data传递给execute(),并通过密钥implode()获取密钥。

$data = array(
         'fname'=>'joe',
         'lname'=>'sina'
);
$stmt = $pdo->prepare("INSERT INTO tblname (".implode(', ', array_keys($data)).") VALUES (:".implode(', :', array_keys($data)).")");
$stmt->execute($data);

数组中的键必须与查询中的占位符匹配(前面带有冒号的占位符)。您在查询中也有语法错误,因为单引号不能引用列。

答案 1 :(得分:0)

如下所示: -

<?php 
$data = array(
         'fname'=>'joe',
         'lname'=>'sina'
);

$columns = "`".implode('`,`', array_keys($data))."`";
$values = "'".implode("','", array_values($data))."'";

 //NOW CHANGE QUERY CODE LIKE BELOW
 //"INSERT INTO tblname($columns) values($values);" 
?>

现在查询将如下所示: - https://eval.in/854152

注意: -

以上代码可以使用,但我建议您使用prepared statements来阻止SQL Injection。谢谢

参考帮助: -

mysqli::prepare

PDO::prepare