2013-04-21 74 views
-1

我試圖做的是創建不同的插入語句 in for循環並在循環中執行它們。那可能嗎?mysqli在for循環中插入不同的insert語句

這裏的簡化代碼

$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

-1。 – 2013-04-21 12:38:04

+0

只有refValues函數不包括在內,我排除了在每個循環中構建不同查詢的代碼。我認爲,展示我如何構建查詢並不重要。 – woopata 2013-04-21 12:41:38

+0

雖然錯誤信息很清楚。這使得這個問題重複http://stackoverflow.com/questions/15447133/mysqli-update-throwing-call-toa-a-member-function-bind-param-error – 2013-04-21 12:50:50

回答

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

,對於張貼「簡化代碼」,這使得整個問題毫無意義的所有