【问题标题】:JOIN MySQL doesn't work加入 MySQL 不起作用
【发布时间】:2013-01-19 10:28:43
【问题描述】:

我已经尝试了所有方法,但没有任何效果。即使在我编写的其他代码中,它也有效。但由于某种原因,现在不会了。

我想加入两个 ID = userID 的表。当我加载页面时,我收到此错误:

警告:mysql_fetch_array():提供的参数不是有效的 MySQL 结果资源在 /home/ynxwleus/domains/mustseenmovies.nl/public_html/films/userinfo.php 第 17 行

有没有人可以帮我解决这个问题?

代码:

$userID = $_SESSION['s_userID'];
        echo $userID;
        $query = "SELECT userID, userName, userFrontname, userSurname, filmID 
        FROM users
        JOIN seenIt
        ON users.userID = seenIt.userID 
        WHERE (userID ='$userID')";

        $res = mysql_query($query);
                while ($row = mysql_fetch_array($res)) {
                    echo $row['userName'];
                    echo $row['userFrontname'];
                    echo $row['userSurname'];
                    echo $row['filmID'];
                }

提前致谢!

【问题讨论】:

  • 赞成答案,但作为旁注,您应该真正考虑使用 mysqli 而不是已弃用的 mysql。

标签: php mysql join where


【解决方案1】:
$query = "SELECT userID, userName, userFrontname, userSurname, filmID 
          FROM users
          JOIN seenIt
          WHERE users.userID = seenIt.userID 
          AND  users.userID = ".$userID." ";

【讨论】:

  • 非常糟糕!此代码易受 SQL 注入攻击!
  • 请添加一些解释。
【解决方案2】:

你的 where 子句需要一个别名:

    WHERE (users.userID ='$userID')

您的 select 子句还需要 userId 的别名:

    SELECT users.serID, userName, userFrontname, userSurname, filmID

事实上,总是使用别名是一个非常好的主意:

SELECT u.userID, u.userName, u.userFrontname, u.userSurname, si.filmID 
FROM users u join
     seenIt si
    ON u.userID = si.userID 
WHERE u.userID ='$userID'

原始查询有语法错误,因为 SQL 引擎不知道引用了哪个 userID。哦,你在想“这很明显,因为on 子句指定值是相同的。”嗯,人类比 SQL 编译器更聪明,至少在常识方面是这样。

【讨论】:

  • @DannyPostma 你在这里也需要一个别名; SELECT users.userID, userName...
  • 是的,刚刚注意到。非常感谢!欣赏它。
【解决方案3】:

如果您的查询返回错误,则 mysql_query 返回布尔值 false。您可以使用mysql_error() 打印出此错误。

$res = mysql_query($query) or die(mysql_error());

此外,mysql_fetch_row 不能用于布尔值,因此会出现编译错误。

正如 Gordon 指出的那样,您的查询有错误。

此外,我建议不要再使用mysql,因为它已被弃用。请改用MySQLiPDO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-23
    • 2015-11-06
    • 1970-01-01
    • 2016-11-23
    • 2011-08-27
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多