【问题标题】:Form field value is not sent to PHP表单字段值未发送到 PHP
【发布时间】:2019-09-26 13:24:50
【问题描述】:

这是我的 new_posts.php 的整个(大部分)脚本 更新查询不起作用,而是将新帖子添加到数据库中。

 if(isset($_POST['add_post'])) {

$title = mysqli_real_escape_string($db, $_POST['title']);
$author = mysqli_real_escape_string($db, $_POST['author']);
$category = mysqli_real_escape_string($db, $_POST['category']);
$body = mysqli_real_escape_string($db, $_POST['body']);
$keywords = mysqli_real_escape_string($db, $_POST['keywords']);

if(isset($_POST['id'])){
  $id = mysqli_real_escape_string($db, $_GET['id']);
  $query = "UPDATE posts SET title='$title',author='$author',category='$category',body='$body',keywords='$keywords' WHERE id='$id'";
}else{
  $d = getDate();
  $date = "$d[month] $d[mday], $d[year]";

  $query = "INSERT INTO posts (title,author,category,body,keywords,date) VALUES('$title','$author','$category','$body','$keywords','$date')";
}
$db->query($query);
}

if(isset($_GET['post'])) {
  $id = mysqli_real_escape_string($db, $_GET['post']);
  $p = $db->query("SELECT * FROM posts WHERE id = '$id'");
  $p = $p->fetch_assoc();
}

$cats = $db->query("SELECT * FROM categories");

?>

这是一些 HTML 部分。

    <h1 class="page-header">Add New Post</h1>
      <div class="table-responsive">
        <form method="post">
        <?php if(isset($p)) {
          echo "<input type='hidden' value='$id' name='$id'/>";
        } ?>

【问题讨论】:

  • ID 是在 GET 还是 POST 中?您正在检查它是否在 POST 中设置,然后在 GET 中转义它
  • 更新了我的问题让您查看更多代码

标签: php html mysql forms


【解决方案1】:

如果正在插入新记录,则您的 UPDATE 查询根本没有运行,您的 INSERT 查询正在运行。所以这个检查是false:

if(isset($_POST['id']))

看看你期望什么会提供$_POST['id']

"<input type='hidden' value='$id' name='$id'/>"

除非字符串值id$id 变量中,否则根本不会调用id。看来这个元素的名字是你数据库的编号id

不要使用 变量 $id 作为名称,使用文字字符串 id 因为这是服务器端代码所期望的:

"<input type='hidden' value='$id' name='id'/>"

【讨论】:

  • 我已经更新了问题让您查看更多代码。不幸的是,将名称从 ..... name='$id' 更改为 name='id'.....没有用。
  • @GrahamMiller:它现在以什么具体方式失败?请注意,您还尝试引用 both $_POST['id']$_GET['id']。根据您现在向我们展示的&lt;form&gt; 标签,我只希望$_POST['id'] 包含一个值。您可以调试以确认您的 SQL 查询。
  • 它未能更新到数据库,而是将新记录插入到数据库中。我创建了一个博客 CMS,用户可以编辑他/她的帖子。这是用户编辑帖子,但不是编辑/更新它,而是创建一个新的博客帖子并保留旧的。
  • @GrahamMiller:那么是时候进行一些调试了。当您尝试更新记录时,$_POST['id'] 的值是多少?执行了哪些具体的代码块? (也就是说,你进入有问题的if 还是else?)你正在执行的SQL 查询的值是多少?
  • 如果我 var_dump($_POST['id']);然后我得到我正在编辑的帖子的 id,这是正确的,然后当我想编辑帖子时,我需要它来更新帖子的信息,该 id 没有发生,而是跳过 if 语句和做其他。希望这有帮助?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-16
  • 2013-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多