Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中将数组转换为数据库查询_Php_Mysql - Fatal编程技术网

在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会更好。