嗨,我在学校项目工作,我不能将其插入数据库
我的错误是什么?我没有任何错误,所以我卡住了。请帮我。我确实有数据库的连接。但是我插入到表单中的内容不会显示在数据库中
$servername = "localhost";
$username = "root";
$password = "root123";
$dbname = "ToetsPro";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$query = "INSERT INTO `opleiding` (`id`,
`opleiding`,
`locatie`)
VALUES (NULL,
'".$_POST["opleiding"]."',
'".$_POST["locatie"]."');";
//echo $query; exit();
$result = mysqli_query($conn, $query);
$id = mysqli_insert_id($conn);
?>
<!DOCTYPE HTML>
<form id="register" action="" method="post">
<table>
<tr>
<td>Opleiding: </td>
<td><input type="text" name="opleiding"></td>
</tr>
<tr>
<td>Locatie: </td>
<td><input type="text" name="locatie"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="submit"></td>
</tr>
</table>
</form>
<a href="index.php">Terug naar de homepage</a>
答案 0 :(得分:1)
好吧,你做错的事情很少。我的错误是什么?我没有任何错误,所以我卡住了。
我注意到的第一件事是你混淆了Object oriented style和Procedural style 这样做可能会让你长期困惑。
这里是你的数据库连接
$conn = new mysqli($servername, $username, $password, $dbname);
您使用mysqli面向对象的样式
然后在这里:$result = mysqli_query($conn, $query);
你使用程序风格。我建议您只使用一种风格,这样您就可以轻松阅读,组织和维护代码。
两个:您的插入语句id
可能会出错,然后在可能存在问题的ID上插入null
,如果您的ID是auto_increment
最好不要在查询中包含它。
三您正在编写危险代码,从长远来看会损害您的应用程序。您在查询中直接注入$_POST
值,这可能会造成危险,并且会使您的应用程序对sql injections
您应该学会使用prepared statements,mysqli或PDO prepared statements。
这是您的代码的外观:
<?php
$servername = "localhost";
$username = "root";
$password = "root123";
$dbname = "ToetsPro";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if (isset($_POST['submit'])) {
//check and validate your inputs
$opleiding = $_POST['opleiding'];
$locatie = $_POST['locatie'];
$query = $conn->prepare("INSERT INTO `opleiding` (opleiding,locatie)VALUES(?,?)");
$query->bind_param("ss", $opleiding, $locatie);
if ($query->execute()) {
echo "success";
$id->insert_id;
} else {
echo "Error :" . $conn->error;
}
}
?>
<!DOCTYPE HTML>
<form id="register" action="" method="post">
<table>
<tr>
<td>Opleiding: </td>
<td><input type="text" name="opleiding"></td>
</tr>
<tr>
<td>Locatie: </td>
<td><input type="text" name="locatie"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="submit"></td>
</tr>
</table>
</form>
<a href="index.php">Terug naar de homepage</a>
答案 1 :(得分:0)
我认为首先您应该对每个变量数据过滤使用mysqli_real_escape_string()
,然后您的查询应该是这样的:
$query = "INSERT INTO `opleiding` (`id`,`opleiding`,`locatie`) VALUES (NULL,'".$_POST['opleiding']."','".$_POST['locatie']."')";