2012-04-05 39 views
1

我只需要将15个值的数组全部插入表中。 而我只是想知道,如果有这样的事:

INSERT INTO table VALUES($myarrayofvalues) 

只是好奇,是非常有用的。

更新:
只有一行15列。

+1

你想插入1行15列,或15列的一列吗? – 2012-04-05 02:31:28

回答

3
$query = "INSERT INTO table VALUES('" . implode("', '", $myarrayofvalues) . "')"; 

编辑

如果你没有做你逃避的是,你可以做的是,在上述声明之前,一个小圈,这样的:

foreach($myarrayofvalues as $k=>$v) 
    $myarrayofvalues[$k] = mysql_real_escape_string($v); 
+1

考虑SQL注入? – 2012-04-05 02:38:16

+1

@Jason总是担心,是的。这个答案只是相对于没有预防的标题。没有线索哪里的变量或数组来自,对吗?它已经可以完成了。如果不是的话,那么在这种情况下,它必须在查询行之前完成,据我所知,但将是可迭代的,我认为这保持了OP正在寻找的好处。 – Rick 2012-04-05 02:42:01

0

当你可以通过来做什么显示在里克,它对SQL注入是开放的。

真的没有没有某种列映射的方式。这是状态元素1是一个字符串,元素2是一个整数。

因此,我看到两个选择:

  1. 都逃不过

    $values = array(); 
    foreach ($myarrayofvalues as $value) { 
        $column[] .= "'" . mysql_real_escape_string($value) . "'"; 
    } 
    $sql = "INSERT INTO table VALUES(" . implode(',', $values) . ")"; 
    
  2. 编写完整的SQL语句

    $sql = "INSERT INTO table (column1_string, column2_int, ...) 
        VALUES ('" . mysql_real_escape_string($myarray[0]) . "', " . (int)$myarray[1] . ", ...) 
    

我更喜欢#2,因为它更具可读性不脆。目前如果您的模式或数组发生更改,您的代码会中断。

相关问题