【问题标题】:PHP simple INSERT databasePHP 简单的 INSERT 数据库
【发布时间】: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

标签: php sql pdo


【解决方案1】:

您可以尝试以这种方式使用您的查询

$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
]);
//$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$query = $pdo->prepare("INSERT INTO content(id, title_content, products_content, comments_content) VALUES('','$title','$products','$comments')");
$query->execute();

绑定参数也更安全

$query = $pdo->prepare("INSERT INTO content(id, title_content, products_content, comments_content) VALUES(:id,:title,:products,:comments)");
$query->bindParam(":id", $id);
$query->bindParam(":title", $title);
$query->bindParam(":products", $products);
$query->bindParam(":comments", $comments);
$query->execute();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    • 2017-05-28
    • 1970-01-01
    • 2018-11-13
    相关资源
    最近更新 更多