通过使用 HTML 表单插入 ID

Posted

技术标签:

【中文标题】通过使用 HTML 表单插入 ID【英文标题】:inserting an ID through the use of a HTML form 【发布时间】:2017-01-30 22:40:55 【问题描述】:

我有一个关于使用 phphtml 表单在数据库中插入外键 ID 的快速查询。

comments 我的数据库设置如下:

Comment_ID PK
Name
Comment_Body
Recipe_ID FK 

对于recipes

Recipe_ID PK
Recipe_Name
Recipe_Description
Method

HTML/PHP:

      *<input  type="hidden" class="form-control"  name="Recipe_ID" autofocus value=<?php echo $row["Recipe_ID"];   ?>    readonly>
Name: <input type="text" class="form-control" name="name" required autofocus> 
Comment: <input type="text" class="form-control" name="comment_body" required autofocus> </br>*

表单发帖脚本

if(isset($_POST["name"]))

    $name = $_POST["name"];
    $name = mysqli_real_escape_string($con, $name);

    if(isset($_POST["comment_body"]))

    $comment = $_POST["comment_body"];
    $comment = mysqli_real_escape_string($con, $comment);

if(isset($_POST["Recipe_ID"]))

    $rid = $_POST["Recipe_ID"];
    $rid = mysqli_real_escape_string($con, $rid);


$sql = "INSERT INTO comment (name, comment_body, Recipe_ID) VALUES 
('$name', '$comment', '$rid')";

PHP 变量和 SQL:

$id = $_GET["Recipe_ID"];*
         *$sqlcomment = "SELECT * FROM comment WHERE Recipe_ID = '". $id . "'"; 
         $commentsresult = mysqli_query($con, $sqlcomment);
         $row = mysqli_fetch_assoc($commentsresult);*

查看该食谱时,将显示与Recipe_ID 1 相关的所有 cmets。

HTML 表单不会发布 Recipe_ID,因为在查看特定食谱页面时无法找到 ID。

如何使用 HTML 表单将特定 ID 发布到数据库?这是为我的设计中的各种配方创建 cmets 的合适方法吗?

非常感谢。

【问题讨论】:

表单应在隐藏输入中包含配方 ID。 为整理我之前的帖子干杯。真的不要用这么多!我的 PHP 页面设置 由具有动态 URL 的各种食谱组成的主页 --> 获取所选食谱 ID 的下一页 表单显示“只读”,仅此而已。我不确定我哪里出错了。 你需要循环调用mysqli_fetch_assoc()来获取所有的cmets。 在问题中发布您的代码。见***.com/help/formatting 既然您没有显示表单的代码,我怎么知道它为什么没有发布? 【参考方案1】:

您的表单应该使用 $id(或 $_GET["Recipe_ID"]),而不是 $row["Recipe_ID"]。如果获取 cmets 的 SQL 没有返回任何行,则根本没有 $row["Recipe_ID"]。

同时,您已经将所需的 ID 传递到页面中。我假设它是作为 POST 参数传递的——这就是你构造 SQL 语句的方式。

所以试试这个形式:

<input  type="hidden" name="Recipe_ID" autofocus value=<?php echo $id; ?>

【讨论】:

很高兴将 ID 发布到数据库中,谢谢。现在我必须找到一种方法来显示所有具有相同 Recipe_ID 的 cmets。因此,如果 Recipe_ID = 7,则将显示与配方 7 相关的所有 cmets。我有一个 select all from cmets where recipe_id = $id 我猜是因为我已经显示了一个特定的得到的 ID 我无法获得相同的 id 用于显示与此相关的所有 cmets? 值得一个单独的问题,但你去吧:while ($row = mysqli_fetch_assoc($cmetsresult)) printf ("%s (%s)\n", $row["Name"] , $row["comment_body"]);

以上是关于通过使用 HTML 表单插入 ID的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 PHP 将未知数量的 HTML 表单字段插入 MySQL?

我正在尝试通过 php 在数据库中插入 html 表单数据,但它没有发生

通过html和php表单将数据插入MySQL数据库时遇到问题[重复]

通过表单将数据从一个表插入到另一个表

Ajax表单提交我想通过id更改表单元素的值,以便脚本从php中的返回值进行下一次调用

最佳实践:通过 HTML id 或 name 属性访问表单元素?