2011-03-27 4 views
2

$ table 인수와 $ cols (배열로) 인수를 사용하는 insert 함수를 작성 중입니다. 는 주어진 테이블에 주어진 값에 삽입 :PHP 함수 배열 인수 조작

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

이 내가 배열이 아니다 얼마나 오래 할 제외한 모든 좋은 것입니다. 이것을하는 방법 ?? 나는 그냥 foreach 문을 사용

답변

5

한 가지를 반복합니다.

$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#을 많이 사용했습니다. implode 함수를 완전히 잊었습니다. 코드가 훨씬 깨끗합니다. – Ben

+0

이 멋지다면 값을 벗어나 따옴표로 묶으십시오. '$ escAndQuote = function ($ x) {return " '". mysql_real_escape ($ x). " '";}; $ colVals = array_map ($ escAndQuote, $ _POST [ 'cols']); ' –

+0

@jon_darkstar 좋은 생각. 나는 아마도 그것을 편집해야합니다. – alex

2

올바른 이스케이프 메커니즘을 사용하여 SQL을 이스케이프 당신이하지 않은

<?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

그게 전부입니다. 고마워요. –