如何在预处理语句函数中传递varible?

时间:2016-10-04 12:47:24

标签: php mysqli prepared-statement

我为INSERT准备了一个语句函数,我在这个论坛中得到了这个函数。但我不知道如何将变量/数组传递给这个函数。我是新手,一些帮助真的很有用。

我想要像这样的人:

$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 个答案:

答案 0 :(得分:-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();
    }     
}