2016-06-08 73 views
0

根據我的項目要求,我有多個記錄要插入表中。多行插入使用存儲過程在php中

而我正在使用一個存儲過程,所以......即700條記錄然後循環700次重複700次和過程調用700次。所以它承擔了太多的負擔。

對於我曾嘗試:

存儲過程:

BEGIN 
    INSERT INTO tmp (`std`,`fees`) VALUES (str1); 
END 

代碼:

for($i=0;$i<count($keys);$i++){ 
    if($i == (count($keys)-1)){ 
     $str .= "$std,$fees"; 
    } else { 
     $str .= "$std, $fees),("; 
    } 
} 

include("../admin/conn.php"); 
$insert_stud_sql = mysqli_query($con, "CALL insertStudd($str)"); 

後完成循環我的STR值類似下面的

12,25000),(8,15000),(4,12000 

所以,在頁rocedure我的查詢將變爲

BEGIN 
    INSERT INTO tmp (`std`,`fees`) VALUES (12,25000),(8,15000),(4,12000); 
END 

經過所有的過程......我不會得到正確的結果。我的意思是數據沒有插入到表格中。

如果有任何解決方案或替代的話,請幫我...

預先感謝您

回答

0

這裏有一個語法錯誤,你錯過收盤報價。

$str .= "$std,$fees"; 

也只是確保你已經聲明變量$str作爲$str="";

+0

是的,我已宣佈,但仍然不工作 – SPG

0

嘗試這樣的事情。

PHP代碼

for($i=0;$i<count($keys);$i++){ 
$str.="(".$std.",".$fees."),"; 
} 
$str="values ".rtrim($str, ","); 

這將輸出類似values (12,25000),(8,15000),(4,12000)

SP

BEGIN 
set @query= CONCAT('INSERT INTO tmp (`std`,`fees`)',str1); 
PREPARE dynamic_statement FROM @query; 
EXECUTE dynamic_statement; 
END 

現在執行$insert_stud_sql = mysqli_query($con, "CALL insertStudd($str)");這將解決你的問題。

+0

你正在得到任何錯誤? – Archish

+0

不,先生,我沒有得到任何錯誤。 – SPG

+0

非常感謝你SP ...這是完美的工作。 – SPG