Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在通过php/html表单将数据插入数据库时,我的数据会被复制三次?_Php - Fatal编程技术网

为什么在通过php/html表单将数据插入数据库时,我的数据会被复制三次?

为什么在通过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

我试图将数据插入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="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显示用于更新值的查询。