加入MySQL不会';不起作用


JOIN MySQL doesn't work

我什么都试过了,但什么都不管用。。即使在我写的其他代码中,它也能工作。但由于某种原因,现在不会了。

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

警告:mysql_fetch_array():提供的参数不是有效的mysql中的结果资源/home/ynxwleus/domains/mustseenmovies.nl/public_htmlfilms/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'];
                }

提前感谢!

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编译器更聪明,至少在常识方面是这样。

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

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

此外,mysql_fetch_row无法处理布尔值,因此会出现编译错误。

正如Gordon所指出的,您的查询有一个错误。

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

$query = "SELECT userID, userName, userFrontname, userSurname, filmID 
          FROM users
          JOIN seenIt
          WHERE users.userID = seenIt.userID 
          AND  users.userID = ".$userID." ";