1

我只有 15 个值的数组,所有这些值都需要插入到表中。我只是想知道是否有这样的事情:

INSERT INTO table VALUES($myarrayofvalues)

只是好奇,会非常有用。

更新:
只有一行 15 列。

4

2 回答 2

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

Edit:

If you haven't done your escaping yet, you can do that in a tiny loop before the above statement, something like:

foreach($myarrayofvalues as $k=>$v)
    $myarrayofvalues[$k] = mysql_real_escape_string($v);
于 2012-04-05T02:36:17.277 回答
0

虽然您可以执行Rick的答案中显示的操作,但它对 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,因为它更具可读性且不那么脆弱。目前,如果您的架构或数组发生更改,您的代码就会中断。

于 2012-04-05T02:41:31.820 回答