-1

我试图做的是在for 循环中创建不同的插入语句并在循环中执行它们。那可能吗?

这是简化的代码

$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循环准备和插入不同的查询和参数?

4

1 回答 1

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]);
}

仅此而已

于 2013-04-21T12:42:23.887 回答