gpt4 book ai didi

php - 如何使用php在mysql中插入不同的多个数组

转载 作者:行者123 更新时间:2023-11-29 21:53:49 26 4
gpt4 key购买 nike

我有一个如下所示的表单:

<input name="first_name[]" type="text">
<input name="last_name[]" type="text">
<input name="email[]" type="email">

我正在使用while循环至print/echo所需的上述表单字段的组数。

里面会有多个数据,我不明白如何使用insert查询insert数据在 mysql表使用php .

最佳答案

首先,您需要知道要尝试插入多少条记录。我为此使用了 first_name,但您可以使用其中任何一个。 (我假设由于这些信息组合在一起,您将始终拥有相同数量的 first_namelast_nameemail。):

$count = count($_POST['first_name']);

了解之后,您可以构建一条 SQL 语句,该语句将 insert all of the records in one query :

$sql = "INSERT INTO people (first_name, last_name, email) VALUES ";
$sql .= implode(', ', array_fill(0, $count, '(?, ?, ?)'));

第二行 (implode...) 将在语句中为您尝试插入的每条记录创建占位符集。 (三个问号代表您要插入的三列。)例如,如果您有两个字段组,则语句将如下所示:

INSERT INTO people (first_name, last_name, email) VALUES (?, ?, ?), (?, ?, ?)

创建 SQL 字符串后,您可以 create a new PDO connection并使用该连接到 create a prepared statement使用您的 SQL。

$pdo = new PDO($dsn, $user, $password);
$statement = $pdo->prepare($sql);

接下来您需要bind your values到准备好的声明。有多种不同的方法可以做到这一点。这是一个例子:

// Create a multidimensional array using each of the fields from your field groups
$columns = array($_POST['first_name'], $_POST['last_name'], $_POST['email']);

$index = 1; // This is the index of the placeholder in the prepared statement
for ($i=0; $i < $count; $i++) { // This will loop as many times as you have field groups
$row = array_column($columns, $i);
// using array_column will pull everything from the $i index of each of the sub-arrays
// e.g. first_name[$i], last_name[$i], email[$i]

foreach ($row as $value) {
// bind the value and increment the index
$statement->bindValue($index, $value);
$index++;
}
}

绑定(bind)完所有参数后,即可execute准备好的声明:

$statement->execute();

关于php - 如何使用php在mysql中插入不同的多个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33378908/

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