2017-02-14 78 views
0

我有MySQL的表,其中用戶可以在網站上發佈一些內容如下:PHP MySQL的評論

CREATE TABLE `Posts` (
    `id` int(6) UNSIGNED NOT NULL, 
    `name` varchar(30) NOT NULL, 
    `post` varchar(8000) NOT NULL, 
    `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
) 

現在我想創建一個用戶對帖子發表評論的表。我不知道正確的做法,缺乏知識。 我可以創建新的表像這樣

CREATE TABLE `Comments` (
    `id` int(10) NOT NULL AUTO_INCREMENT, 
    `name` varchar(30) NOT NULL, 
    `comment` varchar(800) NOT NULL, 
    `postId` varchar(8) NOT NULL, 
) 

,當用戶的意見,我可以顯示從後表和「註釋」表「帖子ID」連接「ID」這一評論。

這是正確的方式來做到這一點,還是有更好的方式來發表評論郵政表?

+3

基本上可以用一個外鍵將它們鏈接。當用戶發表評論時,將用戶標識作爲外鍵保存在評論表中,然後檢索用戶的評論,將您的查詢中的兩個表加入 – Akintunde007

+0

閱讀本文,其中介紹了外鍵的基本知識:https://www.sitepoint.com/mysql-foreign-keys-quicker-database-development/ – GreensterRox

回答

1

基本上,你可以用這樣的外鍵鏈接。

Posts (
     id int(6) UNSIGNED NOT NULL, 
     name varchar(30) NOT NULL, 
     post varchar(8000) NOT NULL, 
     date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
    ); 

如果你願意,你可以爲用戶定義一個外鍵(這是一個很好的實踐)。現在

CREATE TABLE Comments (
     id int(10) NOT NULL AUTO_INCREMENT, 
     name varchar(30) NOT NULL, 
     comment varchar(800) NOT NULL, 
     postId int(11) NOT NULL, 
     user_id int(11) DEFAULT NULL 
); 


ALTER TABLE Comments ADD CONSTRAINT id_fk_post 
FOREIGN KEY(postId) REFERENCES Posts (id); 


ALTER TABLE Comments ADD CONSTRAINT id_fk_user 
FOREIGN KEY(user_id) REFERENCES Users (id); 

,你可以搜索信息的所有評論是這樣的:

SELECT * FROM Comments where postId = 3; 
1
CREATE TABLE `Users` (
    `user_id` int(6) UNSIGNED NOT NULL, 
    `name` varchar(30) NOT NULL, 
    `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
) 

CREATE TABLE `Comments` (
    `id` int(10) NOT NULL AUTO_INCREMENT, 
    `name` varchar(30) NOT NULL, 
    `comment` varchar(800) NOT NULL, 
    `postId` varchar(8) NOT NULL, 
    `user_id_fk` int(6) NOT NULL 
) 

因此,當用戶發佈評論時,您將用戶的ID與評論一起保存在評論表中。

要檢索,你可以試試:

$query = 'SELECT Users.user_id, 
       Users.name, 
       Comments.comment FROM User JOIN Comments ON Users.user_id= Comments.user_id_fk 
         ';