Php 在MySQL查询中插入值是否有比仅插入值($var1、$var2、$var3)更好的方法?
我只需要将15个值的数组全部插入表中。 我只是想知道是否有这样的事情:Php 在MySQL查询中插入值是否有比仅插入值($var1、$var2、$var3)更好的方法?,php,mysql,sql,Php,Mysql,Sql,我只需要将15个值的数组全部插入表中。 我只是想知道是否有这样的事情: INSERT INTO table VALUES($myarrayofvalues) 只是好奇,会很有用的 更新: 只有一行15列 $query = "INSERT INTO table VALUES('" . implode("', '", $myarrayofvalues) . "')"; 编辑: 如果您还没有完成转义,可以在上面的语句之前在一个小循环中完成,例如: foreach($myarrayofvalues
INSERT INTO table VALUES($myarrayofvalues)
只是好奇,会很有用的
更新:只有一行15列
$query = "INSERT INTO table VALUES('" . implode("', '", $myarrayofvalues) . "')";
编辑:
如果您还没有完成转义,可以在上面的语句之前在一个小循环中完成,例如:
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 = "INSERT INTO table (column1_string, column2_int, ...)
VALUES ('" . mysql_real_escape_string($myarray[0]) . "', " . (int)$myarray[1] . ", ...)
我更喜欢#2,因为它更易读,也不那么脆弱。当前,如果您的架构或数组发生更改,您的代码将中断。您是要插入一行15列,还是一列15行?@Jason始终是一个问题,是的。这个答案仅仅是相对于标题而言的,没有任何预防措施。不知道变量或数组来自哪里,对吧?这已经可以做到了。如果没有,那么在这种情况下,就我所知,它必须在查询行之前完成,但是可以使用,我认为这保持了OP所寻求的好处。