mysqli在for循环中不同的插入预处理语句

时间:2013-04-21 12:30:06

标签: php loops insert mysqli

我想要做的是在 for loop 中创建不同的插入语句,并在循环中执行它们。这可能吗?

这是简化代码

$mysqli = new mysqli("localhost", "user", "password", "database");

for($i=1; $i<10; $i++){

    // $query string is created through code, so 
    // INSERT statement is varying after each loop.
    // Lets say, in another step $query will be "INSERT INTO table (row4,row5) VALUES (?,?)";
    // $params will be array("value4","value5");

    $query = "INSERT INTO table (row1,row2,row3) VALUES (?,?,?)";
    $param_type = "sss";
    $params = array("value1","value2","value2");

    $insert_stmt = $mysqli->prepare($query);
    array_unshift($params, $param_type);
    call_user_func_array(array($insert_stmt, 'bind_param'), refValues($params));
    $insert_stmt->execute();
    $insert_stmt->close();

}

如果我运行此代码,我得到的只是一个插入行警告 “call_user_func_array()期望参数1是有效的回调,第一个数组成员不是...中的有效类名或对象”

所以我的问题是:如何通过for循环准备和插入不同的查询和参数?

1 个答案:

答案 0 :(得分:0)

有可能甚至容易制作 你唯一需要的是PDO:

$queries = array('insert 1', 'insert 2', ...);
$params  = array(array(...),array(...), ...);

foreach ($queries as $i => $sql) {
    $stm = $pdo->prepare($sql);
    $stm->execute($params[$i]);
}

那是所有