在您复制问题之前,我会阅读所有与我的问题有关系的答案。我正在尝试使用关联数组插入数据,例如
<?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');
答案 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
。谢谢
参考帮助: -