[英]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.