2016-10-04 2 views
0

INSERT에 대한 준비된 명령문 기능이 있습니다.이 포럼에서이 기능을 사용할 수 있습니다. 하지만 변수/배열을이 함수에 전달하는 방법을 모르겠습니다. 나는 이것에 새로운, 약간 도움은 진짜로 유용 할.준비된 명령문 함수에서 가변 변수를 전달하는 방법은 무엇입니까?

는이 같은 somehing 원하는 : 나는 아래의 기능을 나열했습니다

$obj->insert_data($parameter) 

..

function insert_datas($array) { 
    $placeholders = array_fill(0, count($array), '?'); 

    $keys = $values = array(); 

    foreach($array as $k => $v) { 
     $keys[] = $k; 
     $values[] = !empty($v) ? $v : null; 
    } 

    $stmt = self::$mysqli->stmt_init(); 
    $query = 'INSERT INTO `'.DB_TABLE_PAGES.'` '. 
      '('.implode(',', $keys).') VALUES '. 
      '('.implode(',', $placeholders).')'; 
    $stmt->prepare($query); 

    call_user_func_array(
     array($stmt, 'bind_param'), 
     array_merge(
      array(str_repeat('s', count($values))), 
      $values 
     ) 
    ); 

    $stmt->execute();  
} 

답변

-1

이 시도 희망이 도움이!

define('DB_HOST', 'database_host'); 
define('DB_NAME', 'database_name'); 
define('DB_USER', 'database_user'); 
define('DB_PASS', 'database_password'); 

$dbc = new PDO('mysql:host='. DB_HOST .';dbname='. DB_NAME, DB_USER, DB_PASS); 

function insert_datas($array) { 
    foreach($array as $a) { 
     $insert_table = "INSERT INTO table (column) VALUES (:column)"; 
     $stmt = $dbc->prepare($insert_table); 
     $stmt->bindValue(':column', $a['key'], PDO::PARAM_STR); 
     $stmt->execute(); 
    }  
} 
관련 문제