我想做什么?
我有一个学校项目,我们必须制作一个完全功能的网站,人们可以查看歌曲歌词、创建帐户、登录帐户、评论每个歌词并编辑歌词。
所以我创建了一个名为
表格
我现在想要创建一个评论系统,这样当我打开例如Drake歌曲的歌词时,我只能评论该歌曲,并且当我发布评论时,我希望显示发表评论的用户名和评论。
所以我创建了一个名为
klyrics
的数据库,在其中我有以下表格。表格
users
CREATE TABLE users (
userId int(8) PRIMARY KEY AUTO_INCREMENT,
username varchar(100),
email varchar(100),
password varchar(100));
表格 歌词
CREATE TABLE lyrics (
lyricsId int(8) PRIMARY KEY AUTO_INCREMENT,
artist varchar(100),
song varchar(100),
cover varchar(100),
lyrics varchar(9999),
chartId int(8),
commentId int(8),
FOREIGN KEY (chartId) REFERENCES charts(chartId));
表格 图表
CREATE TABLE charts (
chartId int(8) PRIMARY KEY AUTO_INCREMENT,
cover varchar(100),
artist varchar(100),
song varchar(100));
以及表格 评论
CREATE TABLE comments (
commentId int(8) PRIMARY KEY AUTO_INCREMENT,
userId int(8),
username varchar(100),
comment varchar(9999),
commentedon DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (userId) REFERENCES users(userId));
我现在想要创建一个评论系统,这样当我打开例如Drake歌曲的歌词时,我只能评论该歌曲,并且当我发布评论时,我希望显示发表评论的用户名和评论。
我按照这个教程创建了登录/注册系统:
complete-user-registration-system-using-php-and-mysql-database
那么到目前为止我都做了什么?
在我的addcomment.php
中,我有以下代码:
<?php
include("connectdb.php");
if(isset($_POST) & !empty($_POST)){
$comment = mysqli_real_escape_string($conn, $_POST['comment']);
$username = mysqli_real_escape_string($conn, $_SESSION['username']);
$isql = "INSERT INTO comments (comment, username) VALUES ('$comment', '$username')";
$ires = mysqli_query($conn, $isql) or die(mysqli_error($conn));
if($ires){
$smsg = "Your Comment Submitted Successfully";
header('location: index.php');
}else{
$fmsg = "Failed to Submit Your Comment";
}
} ?>
问题1: 当我提交评论时,评论进入数据库并且看起来像这样:
用户名
下面出现了一个空白。
问题2: 评论没有显示,以下是我的评论展示代码。
<?php
$sql = "SELECT * FROM comments WHERE commentiD = $id";
$res = mysqli_query($conn, $sql);
while ( $r = mysqli_fetch_assoc($res)) {
?>
<h1>By: <?php echo $r['username']; ?></h1>
<h1>Comment: <?php echo $r['comment']; ?></h1>
<?php } ?>
<?php
}
?>
有关问题2的小更新
就像我之前说的那样,我有几个带有ID的页面,因此当你点击“查看歌词”时,你会跳转到例如http://localhost/klyrics/lyrics.php?id=2
,而我只想看到与这首歌相关的评论。
commentID
列,因为它是您表的主键,因此每一行都有一个不同的键值。您需要添加一个类似于lyricsID
的列,以存储歌词页面ID,并添加一个WHERE子句来基于该列中的数据进行选择。 - Noah Boegli$_post['username']
为空,可能是您的表单存在问题,未能正确传递变量。 - Alberto Moro$sql = "SELECT * FROM comments WHERE commentiD = $id";
你把commentiD
作为列,即使在截图中该列被称为commentId
。有很多拼写错误,我认为你应该学习调试的基础知识。虽然这不是问题,但你向我们展示了一个带有变量的查询,但从未显示变量id
的设置位置。你告诉我们你的会话为空。请向我们展示设置会话的代码。 - Loko