在PHP中将数组转换为数据库查询
我有一个数组,如下所示:在PHP中将数组转换为数据库查询,php,mysql,Php,Mysql,我有一个数组,如下所示: Array ( [item-name] => SM58 [make] => Shure [model] => SM58 [qty] => 5 [status] => Available ) 我想将其更改为数据库查询,例如: INSERT INTO `Inventory`(`item-name`, `make`, `model`, `qty`,
Array ( [item-name] => SM58
[make] => Shure
[model] => SM58
[qty] => 5
[status] => Available
)
我想将其更改为数据库查询,例如:
INSERT INTO `Inventory`(`item-name`, `make`, `model`, `qty`, `status`) VALUES ('SM58','Shure','SM58','5',[Available])
我只是不知道如何实现它。您可以使用PDO:
$stmt = $PDOinstance->prepare("
INSERT INTO `Inventory` (`item-name`, `make`, `model`, `qty`, `status`)
VALUES (:item-name, :make, :model, :qty, :status)
");
$stmt->execute($yourArray);
试试这个
foreach($array as $index => $value){
$fields .= "`".$index."`".",";
$values .= "'".mysql_real_escape_string($value)."'".","; //This escapes for mysql
}
$fields = rtrim($fields,",");
$values = rtrim($values,',');
$sql = "INSERT INTO `Inventory`($fields) VALUES ($values)";
然而,由于mysql_*函数被贬低,您最好将上面的post与PDO和prepared语句一起使用,或者您可以将mysqli_*函数与prepared语句一起使用。下面是两个参考资料的链接
PDO:MySQLI:为了简化操作,您还可以将
插入到'Inventory`SET`item name`='SM58',…
。您列出了7个字段和5个值!!!你能给我解释一下这部分内容吗?这样我以后就能理解了?PDO的意思是->execute
将其发送到数据库?@user3207974,PDO代表。基本上,这是一种访问数据库的安全且非常简单的方法。请参阅文档了解更多信息:请不要在没有SQL转义的情况下发布答案。这在任何使用此代码的应用程序中都会造成巨大的负担。@tadman答案不是关于逃跑,而是关于解决方案。在创建数组之前,完全可以选择对字符串进行转义。此外,除非我们知道他们使用的是PDO、MySQL还是mysqli函数,否则我无法指定转义。解决方案总是涉及转义。如果有疑问,请在PDO中给出一个例子,如果您正试图推广使用PDO。看看这里t1gor的例子,它正确地做到了这一点。不幸的是,你的行为延续了PHP开发人员最坏的习惯。@tadman我注意到了如何使用mysql_*函数,但随着它的贬值,我注意到使用带有准备语句的PDO会更好。