无法从数据库检索列信息

无法从数据库检索列信息

我有两个表,即user_info和comments。我想加入表,所以我可以在发生内部联接之后根据评论中的user_id进行关联,该联接将基于id列进行联接。这样做的全部原因是,这样我就可以找出在用户个人资料上发布评论的用户的ID是什么,我将其存储在user_id中。

显示创建表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'


显示创建表注释

'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];


然后我做一个var_dump返回NULL

var_dump($comment_id);


任何想法有什么问题吗?

最佳答案

我认为您不应该使用USING,因为只有当您有2个字段(每个表中的一个都具有相同的名称)时,它才起作用。

在表中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

关于php - 无法从数据库检索列信息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24471456/

10-11 04:41