2011-03-27 58 views
2

我正在使用$ table参数和$ cols(作为数组)参数的插入函数。 其插入到指定表给出的值:PHP函数数组参数操作

$db->query("insert into $table({$cols[0]},{$cols[1]}) values('{$_POST[{$cols[0]}]}','{$_POST[{$cols[1]}]})"); 

这都是很好的,除了我做的阵列不了多久。这个怎么做??

回答

5

有一件事是逃脱使用正确的逃逸机制的SQL你没有这样做。

$postCols = $_POST['cols']; 

foreach($postCols as &$col) { 
    $col = '"' . mysql_real_escape_string($col) . '"'; 
} 

$db->query("insert into $table(" . implode(',', $cols) . ") values(" . implode(',', $postCols . "); 
+0

哈哈,我一直在使用C#。完全忘记了内爆功能。你的代码更清洁。 – Ben 2011-03-27 23:40:54

+0

看起来不错,只记得逃避价值观,并用引号将它们包装起来。 '$ escAndQuote =函数($ x){return“'”。 mysql_real_escape($ x)。 “'”;}; $ colVals = array_map($ escAndQuote,$ _POST ['cols']);' – 2011-03-27 23:42:59

+0

@jon_darkstar好想法。我应该编辑它。 – alex 2011-03-27 23:50:10

2

我只想用一些foreach循环

<?php 
    $sql = "INSERT INTO $table ("; 
    foreach ($cols as $col) 
     $sql .= "`$col`,"; 
    $sql = substr($sql,0,-1); 
    $sql .= ") VALUES("; 
    foreach ($cols as $col) 
     $sql .= "'".$_POST[$col]."',"; 
    $sql = substr($sql,0,-1); 
    $sql .= ");"; 

    echo $sql; 
?> 
+0

就是这样。非常感谢 – 2011-03-27 23:39:30