在php中使用存储过程的多行插入

时间:2016-06-08 05:27:42

标签: php mysqli

根据我的项目要求,我有多个记录要插入表格中。

我正在使用存储过程......即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

因此,在程序中我的查询将变为

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

经过所有的过程...我不会得到正确的结果。我的意思是数据没有插入表格。

如果有任何解决方案或替代方案,那么请帮助我......

提前谢谢

2 个答案:

答案 0 :(得分:0)

这里有语法错误,你错过了收尾报价。

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

还要确保您已将变量$str声明为$str="";

答案 1 :(得分: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)");这将解决您的问题。

相关问题