将表单中的数据插入sql时出现错误消息


Error messages when inserting data from form into sql

我有一个小问题。。。

我需要从表单将数据插入数据库。这很有效,但我有两个问题。

  1. 当我启动网站时,数据库中会添加一个空白行
  2. 当我启动网站时,我会收到每个要插入数据库的对象的错误消息。我得到的错误代码是

注意:未定义的变量:在第51行的C:''wamp''www''index.php中启动

注意:未定义的变量:在第52行的C:''wamp''www''index.php中启动

注意:未定义的变量:在第53行的C:''wamp''www''index.php中启动

我该如何解决这个问题?

这是我的代码:

<html>
    <head>
        <title>ARbeidstimer</title>
        <link rel="stylesheet" type="text/css" href="style.css">
    </head>
    <body>
        <h2>Arbeidstimer</h2>
        <div id ="register">
                <form action="index.php" method="post">
                    <p>
                        <label>Start: </label>
                        <input type="text" name="start" class="field">
                    </p>
                    <p>
                        <label>Slutt:</label>
                        <input type="text" name="slutt" class="field">
                    </p>
                    <p>
                        <label for="telefon">Timer:</label>
                        <input type="text" name="timer" class="field">
                    </p>
                    <p>
                        <input type="submit" name="submit" value="send">
                    </p>
                </form>
            </div>
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "timer";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
if(isset($_POST['submit'])) {
$start = $_POST['start'];
$slutt = $_POST['slutt'];
$timer = $_POST['timer'];
}
$sql = "INSERT INTO jobbing (id, start, slutt, timer)
VALUES ('', '$start', '$slutt', '$timer')";
if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
    </body>
</html>

您可以使用if检查提交状态,但不会将代码包裹在if括号中,这意味着即使没有提交,插入和连接仍然可以进行。

正确代码:

    if(isset($_POST['submit'])) {
$start = $_POST['start'];
$slutt = $_POST['slutt'];
$timer = $_POST['timer'];

$sql = "INSERT INTO jobbing (id, start, slutt, timer)
VALUES ('', '$start', '$slutt', '$timer')";
if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
}

ID(如果它是自动递增的)不需要在INSERT INTO查询中。

您的if条件是检查是否设置了提交,但执行查询,因为if的大括号在查询之前关闭。所以只需移动if块末尾的大括号。

    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 
    if(isset($_POST['submit'])) {
    $start = $_POST['start'];
    $slutt = $_POST['slutt'];
    $timer = $_POST['timer'];
    $sql = "INSERT INTO jobbing (id, start, slutt, timer)
    VALUES ('', '$start', '$slutt', '$timer')";
    if ($conn->query($sql) === TRUE) {
        echo "New record created successfully";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
    }
    $conn->close();
    ?>