我有两个表,即user_info和comments。我想加入表格,所以我可以在内部联接发生之后关联来自评论的user_id
,这将基于id列加入。这样做的全部原因是我可以找出在用户配置文件上发布评论的用户的id是什么,我存储在user_id中。
SHOW CREATE TABLE user_info
CREATE TABLE `user_info` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(12) COLLATE utf8_unicode_ci NOT NULL,
`pass` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL,
`joined` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`))
ENGINE=InnoDB AUTO_INCREMENT=64 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci'
SHOW CREATE TABLE评论
'CREATE TABLE `comments` (
`id` int(11) DEFAULT NULL,
`comment` text COLLATE utf8_unicode_ci,
`date_posted` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`user_id` int(11) DEFAULT NULL)
ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci'
查询代码
try {
$result = $db->prepare("SELECT user_id
FROM comments
INNER JOIN user_info USING (id)
WHERE id = :user");
$result->bindParam(':user', $post_session_user_id);
$result->execute();
$comment_details = $result->fetch();
}
如何存储comment_details
$comment_id = $comment_details[0];
然后我做一个返回NULL
var_dump($comment_id);
任何想法有什么不对?
答案 0 :(得分:1)
我认为您不应该使用USING
,因为只有当您有两个字段时才有效,每个字段中有一个字段具有相同的名称。
在您的表格中,comment.user_id包含user_info.id
所以你的查询应该是
SELECT user_id
FROM comments
INNER JOIN user_info ON user_info.id = comments.user_id
WHERE comments.id = :user