【问题标题】:Joining multiple tables in mySQL在 mySQL 中连接多个表
【发布时间】:2013-03-20 23:22:41
【问题描述】:

好吧,我不太擅长 mySQL。 我在这里要做的是加入 2 个表: 1. users 2. comments 我正在尝试创建一个评论系统,它应该从users 表中提取用户名和个人资料图片,并从comments 表中提取 cmets 和 date_posted。

这是我的查询:

$mem_query = mysql_query("SELECT `comments`.`comment_id` AS `comments_id`, `users`.`user_id` AS `users_id`, `users`.`username`,`users`.`profile_pic`,`comments`.`txt_content`,`comments`.`date_posted` FROM `comments` INNER JOIN `users` ON `users`.`user_id` = `comments`.`user_id` WHERE `comments`.`post_id` = '$post_id'");

我想使用 while 循环运行查询:

while($run_mem = mysql_fetch_array($mem_query)){
    $comment_id = $run_mem['comments_id'];
    $txt_content = $run_mem['comments.txt_content'];
    $profile_pic = $run_mem['users.profile_pic'];

?>
    //Run all the comments depending upon the post_id.
<?php
        }
?>

截至目前,它给了我这个错误: - 这在我的第二次更新后没有显示。

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\simpleblog\view.php on line 73

我该如何解决?谢谢。

P.S:我知道 'mysql_query' 在 PHP 中已被弃用。我稍后会改变它。 P.S 2:我将查询从table.column 修复为table.column,但是,它没有显示任何错误,但它没有从数据库中提取任何信息。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    看看`符号,它们应该是这样的:

    `table`.`column`
    

    而不是:

    `table.column`
    

    【讨论】:

    • 谢谢,它不再显示错误,但它没有从表中提取任何信息。我更新了我的帖子,请再次检查代码
    • 不,这不是问题...我的语法有错误。我在 phpMyAdmin 中测试了我的代码后修复了它。您指出的是我的代码中的主要缺陷之一。所以谢谢:)
    【解决方案2】:

    您的查询中有很大的语法错误:

    SELECT `comments.comment_id` AS `comments_id`, `users.user_id` AS `users_id`, `users.username`,`users.profile_pic`,`comments.txt_content`,`comments.date_posted` FROM `comments` INNER JOIN `users` ON `users.user_id` = `comments.user_id` WHERE `comments.post_id` = '$post_id'
    

    应该是

    SELECT `comments`.`comment_id` AS `comments_id`, `users`.`user_id` AS `users_id`, `users`.`username`,`users`.`profile_pic`,`comments`.`txt_content`,`comments`.`date_posted` FROM `comments` INNER JOIN `users` ON `users`.`user_id` = `comments`.`user_id` WHERE `comments`.`post_id` = '$post_id'
    

    你写了这个:`cmets.user_id`,但它必须是这个:`cmets`.`user_id`,并且几乎在你做错的每个位置

    【讨论】:

    • 谢谢,它不再显示错误,但它没有从表中提取任何信息。我更新了我的帖子,请再次检查代码
    【解决方案3】:

    http://www.php.net/manual/en/function.mysql-query.php

    对于 SELECT、SHOW、DESCRIBE、EXPLAIN 和其他返回结果集的语句,mysql_query() 成功时返回资源,错误时返回 FALSE。

    看起来后者发生了。发生错误,mysql_query 调用返回 false。

    【讨论】:

    • 这没有回答问题。
    • @PolishPrince 问题比它需要的要大得多,并且集中在代码的错误部分。这个答案减半。是时候提出一个新问题了,语句中的语法错误是什么。或者连接字符串中的错误。
    猜你喜欢
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多