gpt4 book ai didi

php - MySQL用while循环插入多条记录

转载 作者:行者123 更新时间:2023-12-01 00:09:31 24 4
gpt4 key购买 nike

我有一个简单的 HTML 表单和一些 php 变量,使用提交方法将书籍详细信息提交到名为 Book 的 MySQL 表。 clcode 是一个自增字段。

$isbn =$_POST["isbn"]; 
$bno =$_POST["b_no"];
$bname =$_POST["b_name"];
$qty =$_POST["qty"];
$price =$_POST["price"];

并且需要根据数量插入记录。例如:- 如果数量=2,它需要执行两次插入查询(应该插入 2 条具有自动递增代码的相同记录)。如果数量=5,它需要执行插入查询 5 次(应该使用自动递增代码插入 5 条相同的记录)等等……我使用存储过程和以下 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());

但是返回一个语法错误。我不明白我出了什么问题。请。任何人都可以帮助我...?谢谢。

最佳答案

创建表

create table book (
id int not null auto_increment,
isbn VARCHAR(20) not null,
b_no VARCHAR(20) not null,
b_name VARCHAR(20) not null,
qty INT not null,
price decimal(8, 2) not null,
primary key(id)
);

创建SP

DELIMITER //

CREATE PROCEDURE proc_book (
IN isbn VARCHAR(20),
IN no VARCHAR(20),
IN name VARCHAR(20),
IN qty INT,
IN price DECIMAL(8,2)
)
BEGIN
DECLARE i INT DEFAULT 0;
WHILE i < qty DO
INSERT INTO book (isbn, b_no, b_name, qty, price) VALUES (isbn, no, name, qty, price);
SET i = i + 1;
END WHILE;
END;

DELIMITER ;

测试SP

call proc_book('978-3-16-148410-0', '1', 'name1', 2, 10.00);

表格中的数据

+----+-------------------+------+--------+-----+-------+
| id | isbn | b_no | b_name | qty | price |
+----+-------------------+------+--------+-----+-------+
| 1 | 978-3-16-148410-0 | 1 | name1 | 2 | 10.00 |
| 2 | 978-3-16-148410-0 | 1 | name1 | 2 | 10.00 |
+----+-------------------+------+--------+-----+-------+

从 PHP 调用 SP

使用mysqli代替mysql

<?php 
// input data should be filterd to prevent SQL injection etc.
$isbn = $_POST["isbn"];
$bno = $_POST["b_no"];
$bname = $_POST["b_name"];
$qty = $_POST["qty"];
$price = $_POST["price"];

//connect to database
$connection = mysqli_connect("hostname", "user", "password", "db", "port");

//run the store proc
$sql = "CALL proc_book('" . $isbn . "', '" . $bno . "', '" . $bname . "', " . $qty . ", " . $price . ")";
$result = mysqli_query($connection, $sql) or die("Query fail: " . mysqli_error());
?>

引用

关于php - MySQL用while循环插入多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33930781/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com