我只有 15 个值的数组,所有这些值都需要插入到表中。我只是想知道是否有这样的事情:
INSERT INTO table VALUES($myarrayofvalues)
只是好奇,会非常有用。
更新:
只有一行 15 列。
$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);
虽然您可以执行Rick的答案中显示的操作,但它对 SQL 注入是开放的。
如果没有某种列映射,真的没有什么好方法可以做到这一点。也就是说元素 1 是字符串,元素 2 是整数。
因此,我看到两个选择:
逃离一切
$values = array();
foreach ($myarrayofvalues as $value) {
$column[] .= "'" . mysql_real_escape_string($value) . "'";
}
$sql = "INSERT INTO table VALUES(" . implode(',', $values) . ")";
编写完整的 SQL 语句
$sql = "INSERT INTO table (column1_string, column2_int, ...)
VALUES ('" . mysql_real_escape_string($myarray[0]) . "', " . (int)$myarray[1] . ", ...)
我更喜欢#2,因为它更具可读性且不那么脆弱。目前,如果您的架构或数组发生更改,您的代码就会中断。