我想为每篇文章添加评论,所以在我的“foreach”循环中我为每篇文章添加了评论,但“设置评论”功能适用于所有艺术
Posted
技术标签:
【中文标题】我想为每篇文章添加评论,所以在我的“foreach”循环中我为每篇文章添加了评论,但“设置评论”功能适用于所有艺术【英文标题】:i want to add commenting to each article, so inside my"foreach"cycle I added commenting to each article, but "set a comment" function runs to all art 【发布时间】:2021-08-04 23:57:07 【问题描述】:这是制作文章窗口的代码
<?php $articles_qr = mysqli_query($connection, "SELECT * FROM `articles` ");
$articles = array();
while ( $art = mysqli_fetch_assoc($articles_qr))
$articles[] = $art;
?>
<?php foreach ($articles as $art)
?>
<section>
<div class="containerstuff">
<div class="stuffpic">
<img src="<?php echo "../static/imagespages/",$art['image'] ?>" class="pico">
</div>
<div class="article">
<h1><?php
echo $art['title']
?>
</h1>
<?php
echo $art['text'];
echo $art['id']
?>
</div>
</div>
<div class="scrollmenu">
<?php include "../includes/comments.php";?>
</section>
<?php
?>
这就是代码 cmets 窗口
<?php
date_default_timezone_set(timezone_identifier);
include_once '../comments.ink.php'
?>
<div class="containercom">
<img src="#" class="commpic">
<p class="comment"></p>
</div>
<div class="blockcom">
<form class='form' method='POST' action="<?php echo setComments($connection)?>">
<div class='form__group'>
<input type='hidden' name='page_id' value="<?php echo $art['id']?>" >
<input type='hidden' name='uid' value='Anonymous'>
<input type='hidden' name='pubdate' value="<?php echo date('Y-m-d H:i:s')?>" >
<textarea name='text' class='form__control' placeholder ='Введите комментарий...' required=''></textarea>
</div>
<div class='form__group'>
<input type='submit' class='form__control2' name='commentSubmit'></input>
</div>
</div>
</form>
这就是 INSERT 函数的代码
<?php
static $firstTime = true;
function setComments($connection)
if(isset($_POST['commentSubmit']))
$idcom = $_POST['page_id'];
$uid = $_POST['uid'];
$pubdate = $_POST['pubdate'];
$text = $_POST['text'];
$sql =
"INSERT INTO `comments` (page_id, uid, pubdate, text)
VALUES ('$idcom', '$uid', '$pubdate', '$text')";
$result = $connection->query($sql);
$firstTime = false;
那么我怎样才能只插入一篇文章(所以当我现在添加它时,出现的 cmets 与我在数据库中的文章数量一样多)
【问题讨论】:
警告:您对SQL Injections 持开放态度,应该使用参数化的prepared statements,而不是手动构建查询。它们由PDO 或MySQLi 提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行,you are still in risk of corrupting your data。 Escaping is not enough! 【参考方案1】:我认为你应该使用 ajax 来附加一个新的评论,这是广泛使用的解决方案,你的做法会变得难以处理。
【讨论】:
【参考方案2】:我还没有找到解决办法,所以我选择了另一种方式。
对于每篇文章,我放置了一个按钮来发布评论,该评论会将用户发送到包含这篇文章的页面,对于“href”的这个按钮,我编写了 php 代码 (href = "comments.php?id=<?php echo $art['id']"?>
),对于这个页面,我使用 $_GET
仅选择此 ID 的文章。然后我只是把我写的 cmets-function 放在那里,所以它现在可以正常工作了,因为函数只适用于 1 个参数
【讨论】:
以上是关于我想为每篇文章添加评论,所以在我的“foreach”循环中我为每篇文章添加了评论,但“设置评论”功能适用于所有艺术的主要内容,如果未能解决你的问题,请参考以下文章