【发布时间】:2020-03-18 19:49:37
【问题描述】:
我无法弄清楚我的 PHP 出了什么问题,但 INSERT 似乎总是失败。 当我提交表单时,什么都没有发生,也没有任何错误消息发送到我的数据库
<form action="" method="POST">
<div class="form-group mt-4">
<label for="exampleInputEmail1">Title</label>
<input type="text" class="form-control" name="title" aria-describedby="emailHelp" required>
</div>
<div class="form-group">
<label for="exampleInputPassword1">Products to buy</label>
<textarea class="form-control" name="products" rows="3" required></textarea>
</div>
<div class="form-group">
<label for="exampleInputPassword1">Comments</label>
<input type="text" class="form-control" name="comments" aria-describedby="emailHelp" required>
</div>
<button type="submit" class="btn btn-info">Submit</button>
</form>
<?php
$title = null;
if (isset($_POST['title'])) {
$title = htmlspecialchars($_POST['title']);
}
$products = null;
if (isset($_POST['products'])) {
$products = htmlspecialchars($_POST['products']);
}
$comments = null;
if (isset($_POST['comments'])) {
$comments = htmlspecialchars($_POST['comments']);
}
$pdo = new PDO('mysql:host=localhost;dbname=liste_course;charset=utf8', 'root', '', [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
]);
$sql = "INSERT INTO content(id, title_content, products_content, comments_content) VALUES('','$title','$products','$comments')";
?>
【问题讨论】:
-
好吧,您实际上并没有执行您的查询。您真正要做的就是将一些文本(恰好是 SQL 查询的形式)分配给一个变量。
-
自动递增时可以删除ID字段和值。
-
如果内容表的id字段为自增,则不需要插入id字段的值。
-
考虑使用准备好的语句来防止 SQL 注入。
-
更多参考和示例,请参阅Prepared statements and stored procedures。