2011-03-27 90 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