2014-01-17 96 views
1

数据库查询我有一个数组如下:更改阵列到PHP

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]) 

我只是不太弄清楚我是如何实现它的。

+0

为了方便,你也可以做''INSERT INTO'Inventory' SET'项目-name' = 'SM58',...''。 –

+0

您列出了7个字段和5个值! –

回答

3

您可以使用PDO:

$stmt = $PDOinstance->prepare(" 
    INSERT INTO `Inventory` (`item-name`, `make`, `model`, `qty`, `status`) 
    VALUES (:item-name, :make, :model, :qty, :status) 
"); 
$stmt->execute($yourArray); 
+0

你能否向我解释这个部分,以便我能够理解它的未来? PDO的意思是......? ' - > execute'将它发送到数据库? – George

+2

@ user3207974,PDO代表[PHP数据对象](http://www.php.net/manual/en/book.pdo.php)。基本上,这是访问数据库的安全且非常简单的方法。请参阅文档以获取更多信息:http://www.php.net/manual/en/class.pdo.php – t1gor

-1

试试这个

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_ *功能折旧,你会使用上述职位与PDO和准备语句更好或者你可以使用mysqli_ *函数以及准备好的语句。以下是这两个资源的链接。

PDO:http://www.php.net/manual/en/book.pdo.php的mysqli:http://uk1.php.net/mysqli

+0

请不要在没有SQL转义的情况下发布答案。这会在使用此代码的任何应用程序中造成巨大的负担。 – tadman

+0

@tadman答案并不是要求逃避,而是要求解决问题。在创建数组之前,完全可以选择将字符串转义。除非我们知道他们是否使用PDO,MySQL或mysqli函数,他们没有指定 –

+0

解决方案总是涉及转义,我也无法指定转义。如有疑问,请在PDO中举一个例子,如果您试图推广使用它。看看t1gor的例子,它是正确的。不幸的是,你的PHP开发者的最坏习惯永远存在。 – tadman