簡體   English   中英

如何將用戶輸入從 HTML 文本表單發送到我的 SQL 數據庫?

[英]How do I send user input from a HTML textform to my SQL database?

我們第一次開始使用PHP和我的SQL

有2個頁面用戶可以go到:

  1. 打開的第一頁有一個帶有 3 個輸入字段的表單:名字、姓氏、您最喜歡的顏色(十六進制代碼顏色選擇器)
  2. 填寫信息后,您會被發送到第二頁,其中的文字是“歡迎 [名字] [姓氏]。很高興見到你。看起來你也喜歡 [顏色] 嗯?” 背景顏色變為您選擇的顏色。

我沒有問題發布它,但我需要將此信息發送到 SQL 數據庫,我似乎無法弄清楚下一步該做什么。

index.php

<?php 


// server settings
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "bezoeker";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} else {
    echo 'connection succesfull';
}

$name = $_POST['name'];
$lastName = $_POST['lastname'];
$favColor = $_POST['favcolor'];

//add to database
$sql = "INSERT INTO formulier (naam, achternaam, kleur) VALUES ('$name', '$lastName', $favColor)";


//database addition confirmation
if(mysqli_query($conn, $sql)){
    echo "Records inserted successfully.";
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($conn);
}


// Close connection
$conn->close();



    include 'template-parts/header.php'; 


    include 'template-parts/main.php'; 


    include 'template-parts/footer.php'; 
?>

Main.php

<main>

<center>
  <form action="welcome.php" method="post">
     Naam: <input type="text" name="name"><br>
     Achternaam: <input type="text" name="lastname"><br>
     Je favoriete kleur: <input type="color" name="favcolor" value="#ff0000">
     <input type="submit">
     </form>
 </center> 


 </main>

歡迎光臨。php

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <link href="css/reset.css" rel="stylesheet">
    <link href="css/style.css" rel="stylesheet">
    <title>PHP</title>
</head>

<body>

    <div class= "welcome-message">
        <h1>Welcome <?php echo $_POST["name"]; ?> <?php echo $_POST["lastname"]; ?>  !<br> </h1>
        <h2>Leuk dat je er bent!</h2>

        <h3>Wouw, mijn favoriete kleur is ook <?php echo $_POST["favcolor"]; ?> !</h3> 

        <?php echo '<body style="background-color: ' . $_POST['favcolor'] . '">'; ?>
    </div>



</body>
</html>

我的數據庫Bezoeker有一個名為Formulier的表,其結構為: naamachternaamkleur

使用當前代碼,我得到了錯誤

連接成功錯誤:無法執行 INSERT INTO 公式(naam、achternaam、kleur)值(''、''、)。 您的 SQL 語法有錯誤; 檢查與您的 MySQL 服務器版本相對應的手冊,以獲取在第 1 行的“)”附近使用的正確語法

我無法弄清楚這意味着什么或下一步該做什么。

您的<form action="welcome.php" method="post">告訴表單 URL 到 go 的下一步和處理。 您插入數據庫的所有代碼都在index.php上,而不是welcome.php上。 如果您直接瀏覽到index.php ,則所有 $_POST 字段都將為空,因為尚未向其發布表單。 您需要將您的welcome.php代碼移至 Welcome.php

歡迎。php

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <link href="css/reset.css" rel="stylesheet">
    <link href="css/style.css" rel="stylesheet">
    <title>PHP</title>
</head>

<body>

    <div class= "welcome-message">

    <?php 
        //check the form was filled out correctly and you have the expected values
        if (isset ($_POST['name']) && ($_POST['lastname']) && ($_POST['favcolor'])) 
        {
            //....
            //Your PHP code to insert into DB
            //....
     ?>

    <h1>Welcome <?php echo $_POST["name"]; ?> <?php echo $_POST["lastname"]; ?>  !<br> </h1>
    <h2>Leuk dat je er bent!</h2>

    <h3>Wouw, mijn favoriete kleur is ook <?php echo $_POST["favcolor"]; ?> !</h3> 

    <?php echo '<body style="background-color: ' . $_POST['favcolor'] . '">'; ?>

    <?php
        }
     else
        { ?>

    <h1>Form was not filled out properly</h1>

  <?php } ?>
    </div>  

</body>
</html>

另外,請注意其他幾個人提到的 SQL 注入漏洞。 將表單輸入中的值直接用於 SQL 查詢是危險的。 正確的方法是使用Prepared Statements

<?php 
    if (isset ($_POST['name']) && ($_POST['lastname'])) {

    $name = $_POST['name'];
    $lastName = $_POST['lastname'];
    $favColor = $_POST['favcolor'];

    // server settings
        $servername = "localhost";
        $username = "root";
        $password = "root";
        $dbname = "bezoeker";

        // Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);

        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        } else {
            echo 'connection succesfull';
        }

        //add to database
        $sql = "INSERT INTO formulier (naam, achternaam, kleur) VALUES ($name, $lastName, $favColor)";

        //database addition confirmation
        if(mysqli_query($conn, $sql)){
            echo "Records inserted successfully.";
        } else{
            echo "ERROR: Could not able to execute $sql. " . mysqli_error($conn);
        }

        // Close connection
        $conn->close();
    }

        include 'template-parts/header.php';     
        include 'template-parts/main.php'; 
        include 'template-parts/footer.php'; 
    ?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM