2013-02-26 79 views
1

請關閉它:)之前閱讀完整的問題
進出口尋找一份準備好的聲明與mysqli的(重要的是,沒有PDO,因爲我不能用它並不能傳遞一些PDO代碼到mysqli。),在那裏我可以插入長查詢與大量的值(約2000)。但是查詢必須準備好。 準備多個插入的mysqli


所以我就開始這樣的:

$array = array("a1", "a2", "a3","a5", "a7", "a5","a9", "a32", "a3", "a4"); 
// AND SO ON UP TO 2000 
$type = "s"; 
$end = count($array); 

$query = "INSERT INTO table (value) VALUES (?)"; 
for ($i = 0; $i <= $end - 1; $i++) 
{ 
    $query .= ", (?)"; 
    $type .= "s"; 
} 

$stmt = $conn->prepare($query); 
$stmt->bind_param("$type", /* PROBLEM */); // HERE IS THE PROBLEM!!! 
$stmt->execute(); 
$stmt->close(); 


但現在我的問題,我怎麼能綁定變量 「bind_param」 dynamicaly?
請不要讓我看到任何像「循環」上的for循環,因爲這對於2000插入來說太慢了:)。

我的意思是這樣

$allvalues = ""; 
foreach ($array as $value) 
{ 
    $allvalues .= "$value "; 
} 
$stmt->bind_param("$type", $allvalues); 

但當然,我不能說綁定。

+0

「(重要的是,沒有PDO,因爲我不能用它並不能一些PDO代碼轉移到)「 - PDO是跨數據庫這就是爲什麼大多數人選擇它... – Nick 2013-02-26 16:19:44

+0

好吧,但爲什麼我應該使用不同的數據庫?我只需要mysql,我測試過PDO vs mysqli和mysqli是**總是**更快,所以不需要PDO。 – 2013-02-26 16:22:58

+1

@CopyDevil你的證明在哪裏? – Neal 2013-02-26 16:23:40

回答

4

使用call_user_func_array使用數組調用函數。

或者只是傳遞全部通過執行變量,那麼你甚至不需要使用bind_param

+9

@CopyDevil你可能想修改你的代碼以使用更小的塊,我敢打賭,一個將2000個參數傳遞給一個函數的美元最終會導致...... \ Stack Overflow。 * YYYEEEEEEAAAAAAAAAAAAAHHHHHHHHHHHH * \ *吉他即興創作* – Sammitch 2013-02-26 16:34:04

+0

好吧,我會測試它:) – 2013-02-26 16:35:00

+1

@Sammitch,這是我在這個網站上看到的最好的時刻。 – Pachonk 2013-03-24 20:10:19