通过使用 HTML 表单插入 ID
Posted
技术标签:
【中文标题】通过使用 HTML 表单插入 ID【英文标题】:inserting an ID through the use of a HTML form 【发布时间】:2017-01-30 22:40:55 【问题描述】:我有一个关于使用 php 和 html 表单在数据库中插入外键 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数据库时遇到问题[重复]