我什么都试过了,但什么都不管用。。即使在我写的其他代码中,它也能工作。但由于某种原因,现在不会了。
我想加入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
,因为它已被弃用。请改用MySQLi
或PDO
。
$query = "SELECT userID, userName, userFrontname, userSurname, filmID
FROM users
JOIN seenIt
WHERE users.userID = seenIt.userID
AND users.userID = ".$userID." ";