2016-10-04 63 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(); 
    }  
}