![](/img/trans.png)
[英]How do I get the HTML page to refresh correctly when I hit the submit button to send data to my SQL database?
[英]How do I send user input from a HTML textform to my SQL database?
我們第一次開始使用PHP
和我的SQL
。
有2個頁面用戶可以go到:
我沒有問題發布它,但我需要將此信息發送到 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
的表,其結構為: naam
、 achternaam
、 kleur
使用當前代碼,我得到了錯誤
連接成功錯誤:無法執行 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.