【发布时间】:2020-04-28 21:11:21
【问题描述】:
我正在尝试使用一些 PHP 将一些 HTML 表单数据处理到 MySQL 数据库中,但这是我第一次涉足 webdev,我想我已经不知所措了。表单被 POST 到 formSubmit.php 文件,该文件将它们转换为 sql 命令随后查询的变量。我已经尝试更改变量布局,但由于某种原因它仍然无法发送。
HTML 表单:
<form class="middleForm" name="pizzaGuest" action="formSubmit.php" method="POST">
<fieldset>
<legend>Guest details</legend>
First name:<br>
<input type="text" name="firstName" required><br>
Last name:<br>
<input type="text" name="lastName" required><br>
Email address:<br>
<input type="email" name="email" required><br>
Party date:<br>
<input type="date" name="date" required><br>
Diet:<br>
<select name="diet">
<option value="omnivore" selected>Omnivore</option>
<option value="pescatarian">Pescatarian</option>
<option value="vegetarian">Vegetarian</option>
<option value="vegan">Vegan</option>
</select><br>
Dairy free?<br>
<input type="checkbox" name="dairyFree"><br>
Toppings:<br>
<input type="text" name="toppings"><br>
Allergies:<br>
<input type="text" name="allergies"><br>
<input type="submit" value="Submit">
</fieldset>
</form>
formSubmit.php:
<?php
$servername = "localhost";
$username = "partyForm";
$password = "████████████";
$dbname = "pizza";
$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$FirstName = $_POST["firstName"];
$LastName = $_POST["lastName"];
$Diet = $_POST["diet"];
$Allergies = $_POST["allergies"];
$Email = $_POST["email"];
$DairyFree = $_POST["dairyFree"];
$sql = "REPLACE INTO guests (FirstName, LastName, Diet, Allergies, Email, DairyFree) VALUES ($FirstName, $LastName, $Diet, $Allergies, $Email, $DairyFree);";
mysql_query($sql)
mysqli_close($conn);
?>
【问题讨论】:
-
sql 容易受到 SQL 注入攻击,除非 sql 中给出的变量都是整数,否则至少需要引用它们。使用
prepared statements来缓解这种情况 -
also- 不要混用
mysql和mysqliapis -
打开所有错误报告,这样您就会看到可能发生的任何错误。
ini_set('display_errors','1');ini_set('display_startup_errors','1');error_reporting(E_ALL);mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
标签: php html mysql forms mysqli