我有一个简单的HTML表单和一些php变量,如下所示,使用submit方法将图书详细信息提交到名为Book的MySQL表中。clcode是一个自动递增字段。
$isbn =$_POST["isbn"];
$bno =$_POST["b_no"];
$bname =$_POST["b_name"];
$qty =$_POST["qty"];
$price =$_POST["price"];
并且需要根据数量插入记录。例如:-如果数量=2,它需要执行插入查询两次(应该插入2个带有自动增量clcodes的相同记录)。如果数量=5,它需要执行插入查询5次(应该插入5个带有自动增量clcodes的相同记录)等等...我使用了一个存储过程和以下SQL查询来完成此操作。
$query ="CREATE PROCEDURE myproc()
BEGIN
DECLARE i int DEFAULT 0;
DO
INSERT INTO book (isbn, b_no, b_name, qty, price) VALUES ('$isbn', '$bno', '$bname', '$qty', '$price');
SET i = i + 1;
WHILE i < $qty;
END WHILE;
END";
$result = mysql_query($query) or die ( mysql_error());
但是它返回了一个语法错误。我不明白我错在哪里。请。任何人可以帮助我...?
7条答案
按热度按时间vulvrdjw1#
创建表格
创建服务提供商
测试SP
表中数据
从PHP调用SP
使用mysqli代替mysql
参考
8mmmxcuj2#
创建一个过程来满足您的要求是没有意义的。
假设它在第一次运行时有效,但创建程序将在下次运行时显示错误,因为程序已经存在。
你只需要运行插入查询多次,或者用多个值构建插入查询并运行一次。下面是我认为你应该做的。
方法1
方法二
n6lpvg4x3#
你不想在你的查询中使用
CREATE PROCEDURE
,你只想使用INSERT
,你真的应该在php中循环执行一个预准备语句来执行插入。阅读有关使用mysqli预准备语句的PHP文档。
tez616oj4#
a14dhokn5#
这就是while循环的语法
例如:-
试试这个。
gopyfrb36#
修改sql语句:
欲了解更多详情,请访问:http://www.mysqltutorial.org/stored-procedures-loop.aspx
cpjpxq1n7#
在SP中使用和不使用事务的性能基准测试。
1.)无交易。
2.)交易。