Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从其他表中选择实体?_Php_Mysql - Fatal编程技术网

Php 如何从其他表中选择实体?

Php 如何从其他表中选择实体?,php,mysql,Php,Mysql,我有一个评论系统,我将新闻ID存储在评论表中,以引用并从新闻表中获取值,我的两个表如下所示 $query = "SELECT comments.id, comments.timestamp, comments.name, comments.email, comments.phone, commen

我有一个评论系统,我将新闻ID存储在评论表中,以引用并从新闻表中获取值,我的两个表如下所示

                $query = "SELECT comments.id,
                 comments.timestamp,
                 comments.name,
                 comments.email,
                 comments.phone,
                 comments.location,
                 comments.comment,
                 news.title FROM 
                 comments, news ORDER BY id DESC LIMIT $from, " . COMM_POST_NUMBER;
新表

CREATE TABLE  `news` (
`id` int(20)  NOT NULL auto_increment,
`timestamp` int(20) NOT NULL,
`title` varchar(255) NOT NULL,
`content` text NULL,
`pic_title` varchar(255) NOT NULL,
`pic_brief` varchar(255) NOT NULL,
`pic_detail` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
评论表

CREATE TABLE `comments` (
`id` int(20) NOT NULL auto_increment,
`timestamp` int(20) NOT NULL,
`title` varchar(255) NOT NULL,
`name` varchar(50) NOT NULL,
`email` varchar(50) NOT NULL,
`phone` int(11) NULL,
`location` varchar(50) NOT NULL,
`comment` text NOT NULL,
`approve` tinyint(1) NOT NULL,
`news_id` int(20) NOT NULL,
PRIMARY KEY(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在comments表中的news\u id中,我存储了新闻的id,我想从comments表中进行select查询,它应该从news中选择news.title,引用comments表中的news\u id

我做了这样的事

                $query = "SELECT comments.id,
                 comments.timestamp,
                 comments.name,
                 comments.email,
                 comments.phone,
                 comments.location,
                 comments.comment,
                 news.title FROM 
                 comments, news ORDER BY id DESC LIMIT $from, " . COMM_POST_NUMBER;

如何使其仅从新闻中获取标题。标题引用评论表中新闻的ID\u ID?

您需要在订单之前添加where子句,方法是:

... FROM comments, news WHERE comments.news_id = news.id ORDER BY ...
使用连接

SELECT comments.id,
             comments.timestamp,
             comments.name,
             comments.email,
             comments.phone,
             comments.location,
             comments.comment,
             news.title 
FROM 
             comments
join news on news.id=comments.news_id
ORDER BY id DESC 
LIMIT .................
两个表都需要:

$query = "SELECT comments.id,
         comments.timestamp,
         comments.name,
         comments.email,
         comments.phone,
         comments.location,
         comments.comment,
         news.title
         FROM comments INNER JOIN news ON comments.news_id = news.id
         ORDER BY id DESC LIMIT $from, " . COMM_POST_NUMBER;
另一个符号是:

FROM comments, news WHERE comments.news_id = news.id
注意:确保对输入进行清理,不要依赖
$from
将其作为整数,强制其为整数:

$from = intval($from);

+1为了保持代码整洁以使我理解,如果可以的话,我会给你另一个+1作为intval提示。我实现了它。我唯一的困惑是内部连接和连接。@Ibrahim,检查这里:引用@palehorse:它们的功能相同。内部联接可以更清晰一些,尤其是当查询中包含其他联接类型(如左或右)时。