2016-06-08 77 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

相关问题