HTML 表单数据到 SQL 数据库
HTML Form Data to SQL Database
信息
我制作了一个 PHP 连接到我的数据库并在我的数据库中创建记录的脚本。这行得通。现在,我向该页面添加了一个简单的表单,我想根据用户提供的输入在我的数据库中创建一条记录。
没有格式的 PHP 脚本:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "detachering";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO medewerkers (voornaam, achternaam, leeftijd, uurloon, opleidingsniveau)
VALUES ('test', 'user', '20', '192', 'HBO')";
if ($conn->query($sql) === TRUE) {
echo "Medewerker is aangemaakt";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
这是我要添加的表格:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<form class="" action="index.html" method="post">
<input type="text" name="voornaam" placeholder="Voornaam">
<input type="text" name="achternaam" placeholder="Achternaam">
<input type="text" name="leeftijd" placeholder="Leeftijd">
<input type="text" name="uurloon" placeholder="Uurloon">
<input type="text" name="opleidingsniveau" placeholder="Opleidingsniveau">
<button type="submit" name="button">Save</button>
</form>
</body>
</html>
我个人认为应该是这样的:
INSERT INTO medewerkers (voornaam, achternaam, leeftijd, uurloon, opleidingsniveau)
VALUES ('POST_['voornaam']', 'POST_['achternaam']', 'POST_['leeftijd']', 'POST_['uurloon']', 'POST_['opleidingsniveau']');
我在 PHP 中没有做太多事情,所以非常感谢任何帮助!
为此使用准备好的语句。
不幸的是,对于 mysqli,您将不得不使用引用而不能直接使用 POST 数组。
$stmt = $conn->prepare('INSERT INTO medewerkers (voornaam, achternaam, leeftijd, uurloon, opleidingsniveau) VALUES(?, ?, ?, ?, ?)');
if ($stmt) {
$voornaam = $_POST['voornaam'];
$achternaam = $_POST['achternaam'];
$leeftijd = $_POST['leeftijd']
$uurloon = $_POST['uurloon'];
$opleidingsniveau = $_POST['opleidingsniveau'];
$stmt->bind_param('sssss', $voornaam, $achternaam, $leeftijd, $uurloon, $opleidingsniveau);
$stmt->execute();
}
编辑:既然我们在谈论它,这里是 PDO 示例(有连接):
try {
$dsn = 'mysql:host=localhost;dbname=test';
$pdo = new PDO($dsn, 'root', 'passwd');
$pdo->exec('SET CHARACTER SET UTF8');
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$sql = "INSERT INTO medewerkers (voornaam, achternaam, leeftijd, uurloon, opleidingsniveau) VALUES(?, ?, ?, ?, ?)";
$stmt = $pdo->prepare($sql);
if ($stmt) {
$params = [$_POST['voornaam'], $_POST['achternaam'], $_POST['leeftijd'], $_POST['uurloon'], $_POST['opleidingsniveau']];
$stmt->execute($params);
}
} catch(Exception $e) {
echo $e->getMessage();
}
请注意,我正在为参数创建一个新数组,因为我不确定 POST 中是否还有更多值。
信息
我制作了一个 PHP 连接到我的数据库并在我的数据库中创建记录的脚本。这行得通。现在,我向该页面添加了一个简单的表单,我想根据用户提供的输入在我的数据库中创建一条记录。
没有格式的 PHP 脚本:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "detachering";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO medewerkers (voornaam, achternaam, leeftijd, uurloon, opleidingsniveau)
VALUES ('test', 'user', '20', '192', 'HBO')";
if ($conn->query($sql) === TRUE) {
echo "Medewerker is aangemaakt";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
这是我要添加的表格:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<form class="" action="index.html" method="post">
<input type="text" name="voornaam" placeholder="Voornaam">
<input type="text" name="achternaam" placeholder="Achternaam">
<input type="text" name="leeftijd" placeholder="Leeftijd">
<input type="text" name="uurloon" placeholder="Uurloon">
<input type="text" name="opleidingsniveau" placeholder="Opleidingsniveau">
<button type="submit" name="button">Save</button>
</form>
</body>
</html>
我个人认为应该是这样的:
INSERT INTO medewerkers (voornaam, achternaam, leeftijd, uurloon, opleidingsniveau)
VALUES ('POST_['voornaam']', 'POST_['achternaam']', 'POST_['leeftijd']', 'POST_['uurloon']', 'POST_['opleidingsniveau']');
我在 PHP 中没有做太多事情,所以非常感谢任何帮助!
为此使用准备好的语句。 不幸的是,对于 mysqli,您将不得不使用引用而不能直接使用 POST 数组。
$stmt = $conn->prepare('INSERT INTO medewerkers (voornaam, achternaam, leeftijd, uurloon, opleidingsniveau) VALUES(?, ?, ?, ?, ?)');
if ($stmt) {
$voornaam = $_POST['voornaam'];
$achternaam = $_POST['achternaam'];
$leeftijd = $_POST['leeftijd']
$uurloon = $_POST['uurloon'];
$opleidingsniveau = $_POST['opleidingsniveau'];
$stmt->bind_param('sssss', $voornaam, $achternaam, $leeftijd, $uurloon, $opleidingsniveau);
$stmt->execute();
}
编辑:既然我们在谈论它,这里是 PDO 示例(有连接):
try {
$dsn = 'mysql:host=localhost;dbname=test';
$pdo = new PDO($dsn, 'root', 'passwd');
$pdo->exec('SET CHARACTER SET UTF8');
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$sql = "INSERT INTO medewerkers (voornaam, achternaam, leeftijd, uurloon, opleidingsniveau) VALUES(?, ?, ?, ?, ?)";
$stmt = $pdo->prepare($sql);
if ($stmt) {
$params = [$_POST['voornaam'], $_POST['achternaam'], $_POST['leeftijd'], $_POST['uurloon'], $_POST['opleidingsniveau']];
$stmt->execute($params);
}
} catch(Exception $e) {
echo $e->getMessage();
}
请注意,我正在为参数创建一个新数组,因为我不确定 POST 中是否还有更多值。