您好我已经创建了一个数据库,用于存储表单在我的页面上发送的信息。 数据库的结构如下:
cid(comment id) uid(value='Anonymous') id(of the page) date message(text of the message)
所以,当我访问我网站的特定页面时,例如http://miostio.com/page.php?id=15 在这里,我可以通过一个表单发表评论,该表单发送您可以在我的数据库中看到的信息。
现在在我的数据库中存储了我已经把评论放在其中的页面的id,但是当我尝试通过函数看到该页面中的评论时:getComments($ conn); ,这里显示保存在数据库中的所有注释,而不仅仅是带有页面id的注释。
我希望显示的评论对应于页面的id,在id为(15)的页面中显示id为(15)的页面的评论,在id为(10)的页面中显示页面的评论id(10)exc ...
PHP - >发送数据的表单
echo "<form method='POST' action='".setComments($conn)."'>
<input type='hidden' name='id' value='".$row['id']."'>
<input type='hidden' name='uid' value='Anonymous'>
<input type='hidden' name='date' value='".date('Y-m-d H:i:s')."'>
<textarea name='message'></textarea><br>
<button name='commentSubmit' type='submit' class='comm-btn'>Comment</button>
</form>";
getComments($conn);
其他PHP CODE,包含由表单
调用的函数 function setComments($conn) {
if (isset($_POST['commentSubmit'])){
$uid = $_POST['uid'];
$date = $_POST['date'];
$message = $_POST['message'];
$id = $_POST['id'];
$sql = "INSERT INTO comments (uid, date, message, id) VALUES ('$uid', '$date', '$message', '$id')";
$result = $conn->query($sql);
}
}
function getComments ($conn) {
$sql = "SELECT * FROM comments WHERE id = id ORDER BY cid DESC";
$result = $conn->query($sql);
while($row = $result->fetch_assoc()) {
echo "<div class='comment-box'><p>";
echo $row['uid']."<br>";
echo $row['date']."<br>";
echo nl2br($row['message']);
echo "</p></div>";
}
}
答案 0 :(得分:0)
"SELECT * FROM comments WHERE id = id ORDER BY cid DESC"
id始终=== id
你需要在那里给出真正的身份......
"SELECT * FROM comments WHERE id = $id ORDER BY cid DESC"
会考虑像这样保护它免受sql注入:
"SELECT * FROM comments WHERE id = " . (int)$id . "ORDER BY cid DESC"
答案 1 :(得分:0)
你至少犯了两个错误(我还不知道其余的是否合适并且有效):
1st:你的sql语句不包含你正在使用的变量,只是说有点'如果1 = 1'。所以改成它:
$sql = "SELECT * FROM comments WHERE id = $id ORDER BY cid DESC"
第二名:你还没有该功能的$ id。 所以包括:
function getComments ($conn) {
$id = intval($_POST['id']); // cast to int for security
$sql = "SELECT * FROM comments WHERE id = $id ORDER BY cid DESC";
$result = $conn->query($sql);
while($row = $result->fetch_assoc()) {
echo "<div class='comment-box'><p>";
echo $row['uid']."<br>";
echo $row['date']."<br>";
echo nl2br($row['message']);
echo "</p></div>";
}
}