gpt4 book ai didi

php - 一次提交插入多行时如何查出数据库中是否存在行

转载 作者:行者123 更新时间:2023-11-29 16:09:56 25 4
gpt4 key购买 nike

一个新手在这里寻求帮助。我创建了一个多重插入表单,其中有 3 个字段。假设字段的名称是:“name”、“surname”和“age”。如果数据库中还没有相同的数据,我会尝试将它们插入数据库。如何检查那里是否已经存在数据?

当我尝试将一条记录插入数据库时​​,检查相同的记录是否已保存在数据库中是非常容易的。当我尝试将多条记录插入同一数据库时,就会出现问题。在多记录情况下,我必须使用 foreach 循环才能成功,但我不知道该怎么做。预先感谢您的帮助。

<?php

include('../mysqli_connect3.php');
include 'includes/header.html';
$page = 'quest_insert.php';

for($i = 0; $i < $_POST['numbers']; $i++) {
if (!empty($_POST["name"][$i]) && !empty($_POST["surname"][$i]) && !empty($_POST["age"][$i])) {
$sql = mysqli_query($dbc, "SELECT name, surname, age FROM users WHERE 'name' = '".$_POST['name'][$i]."' AND 'surname' = '".$_POST['surname'][$i]."' AND 'age' = '".$_POST['age'][$i]."'");
if (mysqli_num_rows($sql) > 0) {
echo "Data '" . $name[$i] . "' and '" . $surname[$i] ."' are already saved in database!";
mysqli_close($dbc);
header("refresh:5; url=$page");

} else {
$name[$i] = mysqli_escape_string($dbc, $_POST["name"][$i]);
$surname[$i] = mysqli_escape_string($dbc, $_POST["surname"][$i]);
$age[$i] = ($_POST["age"][$i]);
mysqli_query($dbc, "INSERT INTO users (name, surname, age) VALUES ('".$_POST['name'][$i]."', '".$_POST['surname'][$i]."','".$_POST['age'][$i]."')");
echo "Data '" . $name[$i] . "' and '" . $surname[$i] ."' are inserted into database! <br />";
header("refresh:6; url=$page");
}} else {
echo "You forgot to fill in all fields!";
header("refresh:2; url=$page");
exit();
}
}

?>

最佳答案

MySQL ON DUPLICATE KEY UPDATE for multiple rows insert in single query

这应该指出您需要去的地方。

请记住,使用 rowCount 进行重复可能会产生误导,因为它返回 1 表示插入,2 表示更新(至少使用 PDO) - 我会让其他人使用准备好的语句向您进行讲座

关于php - 一次提交插入多行时如何查出数据库中是否存在行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55358317/

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