一个新手在这里寻求帮助。我创建了一个多重插入表单,其中有 3 个字段。假设字段的名称是:"名称"、"姓氏"和"年龄"。如果数据库中还没有相同的数据,我正在尝试将它们插入数据库。如何检查那里是否已经存在数据?
当我尝试只将一条记录插入数据库时,检查相同的记录是否已保存在数据库中非常容易。当我尝试将多个记录插入同一数据库时,会出现此问题。在多个记录案例中,我必须使用 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 在重复键更新上为多个行插入在单个查询中插入
这应该会指出您需要去的地方。
请记住,在重复上使用 rowCount 可能会产生误导,因为它返回 1 用于插入,返回 2 用于更新(至少使用 PDO( - 我会让其他人使用准备好的语句给你讲课 eon
感谢所有建议。我对代码进行了一些更改,如下所示,需要获得更多反馈:
<?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, "INSERT INTO fi_fa (name, surname, age) VALUES '".$_POST['name'][$i]."', 'surname' = '".$_POST['surname'][$i]."', 'age' = '".$_POST['age'][$i]."' WHERE NOT EXISTS( SELECT name, surname, age FROM fi_fa WHERE name = '".$_POST['name'][$i]."' AND surname = '".$_POST['surname'][$i]."' AND age = '".$_POST['age'][$i]."') LIMIT 1");
echo "Data has been saved successfully.";
}
} else {
echo "You forgot to fill in all fields!";
header("refresh:2; url=$page");
}
?>