是否有更好的方法将值插入MySQL查询而不仅仅是VALUES($ var1,$ var2,$ var3)?

时间:2012-04-05 02:29:56

标签: php mysql sql

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

INSERT INTO table VALUES($myarrayofvalues)

只是好奇,会非常有用。

更新:
只有一行,有15列。

2 个答案:

答案 0 :(得分:3)

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

修改

如果你还没有完成转义,你可以在上述声明之前在一个小循环中完成,例如:

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

答案 1 :(得分: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] . ", ...)
    
  3. 我更喜欢#2,因为它更易读,更不易碎。目前,如果您的架构或阵列发生更改,则代码会中断。