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

标签 php

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

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

用户

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 歌曲的歌词时,我可以只评论那首歌,当我发表评论时,我想显示发帖人的用户名和评论

我按照本教程创建了 login/register system

到目前为止我做了什么? 在我的 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: 当我提交评论时,评论进入数据库,看起来像这样:enter image description here 用户名下有一个空白点。

问题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 上将用户名和用户标识设置为 session 。

然后在名为 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 中做

关于php - 更新 - 两个表之间的链接以获取用户名 - mysql/php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60408822/

相关文章:

php - 使用 PHP 从 MySQL 获取信息时遇到问题

php - 如何使用 PHP 在 Mirror API 帐户插入方法中插入和检索 postBody

php - 运行控制台应用程序时缺少 MSVCR100.dll

php - 如何在 Symfony 5 上使用带有 easyAdmin 3 的 Vich uploader

php - IMDB 抓取问题

php - 如果错误,则使用不同的参数开始循环?

PHP https 检查灵活的 ssl (cloudflare),怎么办?

TideSDK中的php.ini和php扩展

IPv6 的 PHP preg_match 问题

php - 将输入类型标签内的文本居中