为什么在通过php/html表单将数据插入数据库时,我的数据会被复制三次?
我试图将数据插入html/php表单,然后新数据显示在同一页面的php/html表上,但是当我插入数据时,它会返回3次左右。为什么会这样?下面是firefox中输出内容的图片 这是我的index.php文件为什么在通过php/html表单将数据插入数据库时,我的数据会被复制三次?,php,Php,我试图将数据插入html/php表单,然后新数据显示在同一页面的php/html表上,但是当我插入数据时,它会返回3次左右。为什么会这样?下面是firefox中输出内容的图片 这是我的index.php文件 <?php // this is the connection to the database include_once "includes/connection.php"; ?> <!DOCTYPE html> <html lang="e
<?php
// this is the connection to the database
include_once "includes/connection.php";
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<table>
<?php
//this selects the different columns from the different tables and then queries them.
$sql = "SELECT test3.speed, test2.model, test1.car FROM test1, test2, test3 ";
$result = $conn-> query($sql);
echo "<table>
<tr>
<th>Car</th>
<th>Model</th>
<th>Speed</th>
</tr>";
//output the data of each row
while ($row = $result->fetch_assoc()) {
echo "<tr>
<td>" . $row["car"] . "</td>
<td>" . $row["model"] . "</td>
<td>" . $row["speed"] . "</td>
</tr>";
}
echo "</table>";
// This form "SHOULD" insets data into tables "test1", "test2", "test3"
?>
<form action="includes/register.php" method="POST">
<input type="text" name="car" placeholder="Car">
<br>
<input type="text" name="model" placeholder="model">
<br>
<input type="text" name="speed" placeholder="speed">
<br>
<button action="submit" name="submit">Register</button>
</form>
</body>
</html>
文件
登记
这是我的register.php文件
<?php
include_once "connection.php";
$car = $_POST['car'];
$model = $_POST['model'];
$speed = $_POST['speed'];
mysqli_query($conn,"INSERT INTO test1 (car) VALUES ('$car')");
mysqli_query($conn,"INSERT INTO test3 (speed) VALUES ('$speed')");
mysqli_query($conn,"INSERT INTO test2 (model) VALUES ('$model')");
if ($conn)
{
echo "successful";
}
else
{
echo "Error";
}
header ("Location: ../index.php?register=success");
MySQL不知道如何连接您的数据,所以它只是打印所有数据。 您应该做的第一件事是在表中创建关联列 根据您的需要,我认为以下示例将适合您:
CREATE TABLE IF NOT EXISTS `car` (
`id` INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
`value` varchar(255) NOT NULL
);
CREATE TABLE IF NOT EXISTS `model` (
`id` INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
`value` varchar(255) NOT NULL,
`car_id` INTEGER NOT NULL UNIQUE
);
CREATE TABLE IF NOT EXISTS `speed` (
`id` INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
`value` varchar(255) NOT NULL,
`car_id` INTEGER NOT NULL UNIQUE
);
INSERT INTO car(`value`) VALUES ('audi');
INSERT INTO model(`value`,`car_id`) VALUES ('some_model',1);
INSERT INTO speed(`value`,`car_id`) VALUES ('some_speed',1);
INSERT INTO car(`value`) VALUES ('toyota');
INSERT INTO model(`value`,`car_id`) VALUES ('some_model2',2);
INSERT INTO speed(`value`,`car_id`) VALUES ('some_speed2',2);
下面的模式允许您将车速/车型与汽车相关联,因此您只需执行一些JOIN
,即可获得所需的结果
SELECT car.id,model.value,speed.value FROM car LEFT JOIN model on car.id=model.car_id LEFT JOIN speed ON car.id=speed.car_id;
因为您在每个页面加载时都会运行它,所以我尝试添加关联列car\u id,然后更改$sql查询,使其看起来像这样
选择test1.id、test1.car、test2.model,test3.speed FROM test1 LEFT JOIN test1上的test2.id=test2.car\u id LEFT JOIN test1上的test3.id=test3.car\u id
,但现在它只显示表1(test1)中的信息,而不显示其他表中的信息。@mago04040402可能在其他表中缺少car\u id。没有您的表模式很难说。检查您的表定义是否与提供的示例相对应。car_id位于test2(表2)和test3(表3)中,属于primarykey且不为空。我还创建了数据库和您创建的表的精确副本,但插入数据时表不会更新编辑:修复了该问题,然而现在我又回到了问题的起点。它只更新Car表中的值…@mago040402显示用于更新值的查询。