繁体   English   中英

更新 - 两个表之间的链接以获取用户名 - mysql / php

[英]updated -link between two tables to get username - mysql / php

我想用这个做什么? 嗯,我有一个学校项目,我们必须制作一个功能齐全的网站,人们可以在其中查看歌曲歌词创建帐户登录帐户评论每首歌词编辑歌词

所以我创建了一个名为klyrics的数据库 在klyrics我有以下表格。

users

CREATE TABLE users (
userId int(8) PRIMARY KEY AUTO_INCREMENT,
username varchar(100),
email varchar(100),
password varchar(100));

lyrics

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));

表格charts

CREATE TABLE charts (
chartId int(8) PRIMARY KEY AUTO_INCREMENT,
cover varchar(100),
artist varchar(100),
song varchar(100));

和表comments

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));


现在我想创建一个评论系统,所以当我打开例如德雷克歌曲的歌词时,我只能评论那首歌,当我发表评论时,我想显示发表评论的人的用户名和评论.

我按照本教程创建登录/注册系统

那么到目前为止我做了什么? 在我的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:当我提交评论时,评论进入数据库,如下所示: 在此处输入图片说明 username名下有空白处。

问题 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 的页面,因此当您单击“ View Lyrics您会转到http://localhost/klyrics/lyrics.php?id=2并且我只想要查看与此歌词相关的评论。

创建一个评论系统 喜欢你的! 您需要在 login.php 上将用户名和用户 ID 设置为会话。

并在名为postid的表中添加一个额外的列。

然后像这样插入到数据库中:

$stmt = $pdo->prepare("INSERT INTO comments(postid, userid, username, comment)
                VALUES(:postid, :userid, :username, :comment)");
$stmt->bindParam(':postid', $post_id, PDO::PARAM_INT);
$stmt->bindParam(':userid', $_SESSION['userid'], PDO::PARAM_INT);
$stmt->bindParam(':username', $_SESSION['username'], PDO::PARAM_STR);
$stmt->bindParam(':comment', $comment, PDO::PARAM_STR);
$stmt->execute();

注意commentid是自动递增的, TIMESTAMP 0 ON UPDATE CURRENT_TIMESTAMP不需要添加日期。

您可以使用 left join 或 join 从另一个表等中获取有关帖子和用户的信息……如下所示:

SELECT * FROM comments
        JOIN users ON comments.userid = users.userid
        AND postid = :postid 
        ORDER BY commentid DESC";

我做的很简单。

$post_id = '1';
$sql = "SELECT * FROM comments WHERE postid = :postid";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(":postid", $post_id);
$stmt->execute();
$comment = $stmt->rowCount();
if($comment == 0){
    echo "be the first commenter";
}else{
    while($row = $stmt->fetch()){
        //display your codes here
    }
}

注意:我使用的是PDO准备好的语句,你需要在 mysqli 中做

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM