如何将 HTML 下拉菜单数据写入 MySQL 数据库?
How to write an HTML dropdown menu data to MySQL database?
我正在尝试将 HTML 下拉列表数据写入 MySQL 数据库。
我有以下 HTML 表格:
<body>
<form method="post" action="test.php">
<h3>Name:</h3>
<input type="text" name="Name">
<h3>Choose an Interest</h3>
<select name="Interests" style="width: 400px !important; min-width: 400px; max-width: 400px;">
<option value="">Choose an option</option>
<option value="kings">Adroring Kings</option>
<option value="europe">Travelling Across Europe</option>
<option value="poland">Poland's Work of Art</option>
</select>
<input type="submit" name="Submit" id="Submit" value="Submit">
</form>
</body>
和以下 PHP 文件连接到我的数据库:
<?php
// database connection code
// $con = mysqli_connect('localhost', 'database_user', 'database_password','database');
$con = mysqli_connect('localhost', 'root', '','test');
// get the post records
$name = $_POST['Name'];
$interests= $_POST['Interests'];
// database insert SQL code
$sql = "INSERT INTO `test_data` (`Name`, `Interests`) VALUES ('$name', '$interests')";
// insert in database
$rs = mysqli_query($con, $sql);
if($rs){
echo "Contact Records Inserted";
}
?>
我的 SQL 已连接并且在我输入名称后工作正常。但是,当我 select 从下拉框中选择一个选项时,我输入的数据不再通过数据库。
我的数据库:
要使用 PHP 将所选值存储在数据库中,您必须执行下述任务。我强烈建议尽可能使用 PDO 而不是 mysqli。我将展示如何使用两者。
1。读取提交的数据
当用户提交表单时,值将填充到超级全局数组中。如果您的 HTML 表单设置为 POST 方法,那么这些值将出现在 $_POST
中。但是,您应该始终确保在脚本运行时实际提交了这些值。您可以使用 isset()
函数进行检查。
// method 1
if(isset($_POST['Name'], $_POST['Interests'])) {
// your code
}
2。建立与数据库的连接
每次脚本需要在数据库中执行某些操作时,它都必须有一个打开的连接。此步骤对于确保数据可以正确传输很重要。您必须始终确保三件事:启用错误报告、打开连接并设置正确的字符集。
使用 PDO:
$pdo = new \PDO("mysql:host=localhost;dbname=test;charset=utf8mb4", 'user', 'pass', [
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
\PDO::ATTR_EMULATE_PREPARES => false
]);
使用 mysqli:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'user', 'pass', 'test');
$mysqli->set_charset('utf8mb4');
3。执行准备好的语句
无论何时需要执行操作,都应始终使用准备好的语句。准备好的语句的巨大优势在于它们将数据与命令分开发送,并且两者不能意外混合。
使用 PDO:
$stmt = $pdo->prepare('INSERT INTO `test_data` (`Name`, `Interests`) VALUES (?, ?)');
$stmt->execute([
$_POST['Name'],
$_POST['Interests']
]);
使用 mysqli:
$stmt = $mysqli->prepare('INSERT INTO `test_data` (`Name`, `Interests`) VALUES (?, ?)');
$stmt->bind_param('ss', $_POST['Name'], $_POST['Interests']);
$stmt->execute();
这就是将简单数据插入 MySQL table 所需的全部内容。
我正在尝试将 HTML 下拉列表数据写入 MySQL 数据库。
我有以下 HTML 表格:
<body>
<form method="post" action="test.php">
<h3>Name:</h3>
<input type="text" name="Name">
<h3>Choose an Interest</h3>
<select name="Interests" style="width: 400px !important; min-width: 400px; max-width: 400px;">
<option value="">Choose an option</option>
<option value="kings">Adroring Kings</option>
<option value="europe">Travelling Across Europe</option>
<option value="poland">Poland's Work of Art</option>
</select>
<input type="submit" name="Submit" id="Submit" value="Submit">
</form>
</body>
和以下 PHP 文件连接到我的数据库:
<?php
// database connection code
// $con = mysqli_connect('localhost', 'database_user', 'database_password','database');
$con = mysqli_connect('localhost', 'root', '','test');
// get the post records
$name = $_POST['Name'];
$interests= $_POST['Interests'];
// database insert SQL code
$sql = "INSERT INTO `test_data` (`Name`, `Interests`) VALUES ('$name', '$interests')";
// insert in database
$rs = mysqli_query($con, $sql);
if($rs){
echo "Contact Records Inserted";
}
?>
我的 SQL 已连接并且在我输入名称后工作正常。但是,当我 select 从下拉框中选择一个选项时,我输入的数据不再通过数据库。
我的数据库:
要使用 PHP 将所选值存储在数据库中,您必须执行下述任务。我强烈建议尽可能使用 PDO 而不是 mysqli。我将展示如何使用两者。
1。读取提交的数据
当用户提交表单时,值将填充到超级全局数组中。如果您的 HTML 表单设置为 POST 方法,那么这些值将出现在 $_POST
中。但是,您应该始终确保在脚本运行时实际提交了这些值。您可以使用 isset()
函数进行检查。
// method 1
if(isset($_POST['Name'], $_POST['Interests'])) {
// your code
}
2。建立与数据库的连接
每次脚本需要在数据库中执行某些操作时,它都必须有一个打开的连接。此步骤对于确保数据可以正确传输很重要。您必须始终确保三件事:启用错误报告、打开连接并设置正确的字符集。
使用 PDO:
$pdo = new \PDO("mysql:host=localhost;dbname=test;charset=utf8mb4", 'user', 'pass', [
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
\PDO::ATTR_EMULATE_PREPARES => false
]);
使用 mysqli:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'user', 'pass', 'test');
$mysqli->set_charset('utf8mb4');
3。执行准备好的语句
无论何时需要执行操作,都应始终使用准备好的语句。准备好的语句的巨大优势在于它们将数据与命令分开发送,并且两者不能意外混合。
使用 PDO:
$stmt = $pdo->prepare('INSERT INTO `test_data` (`Name`, `Interests`) VALUES (?, ?)');
$stmt->execute([
$_POST['Name'],
$_POST['Interests']
]);
使用 mysqli:
$stmt = $mysqli->prepare('INSERT INTO `test_data` (`Name`, `Interests`) VALUES (?, ?)');
$stmt->bind_param('ss', $_POST['Name'], $_POST['Interests']);
$stmt->execute();
这就是将简单数据插入 MySQL table 所需的全部内容。