我正试图找出'x'的朋友是谁,并使用该数据数组来查询另一个表。
到目前为止我所拥有的是
<?
session_start();
$user = $_SESSION['username'];
include($_SERVER['DOCUMENT_ROOT'].'/assets/global/scripts/***.php');
$data = mysql_query("SELECT * FROM hotm**e_rates WHERE (SELECT * FROM hot**e_friends WHERE f1='$user' OR f2='$user') ORDER BY id LIMIT 0,1");
$row = mysql_fetch_assoc($data);
if($row['f1']==$user) {
echo $row['f2'];
}else{
echo $row['f1'];
}
?>
那不起作用。 :( 错误是返回val是一个bool。
有关如何解决此问题或使用替代方法的任何想法?
谢谢! :d
答案 0 :(得分:1)
返回的值是bool,因为MYSQL查询中发生错误。
您必须设置WHERE [main_query_table] = (SELECT [table_field] FROM hot**e_friends WHERE f1='$user' OR f2='$user')
。
参考文献:
答案 1 :(得分:0)
我认为你不能像Jeff所说的那样做 - 如果用户拥有超过1个友谊,那么它将失败,因为子查询将返回多行。我假设hotm ** e_rates表中有一个字段'username',我们可以用来加入。我还假设您希望获得与$ user的朋友关联的所有_rates:
SELECT
r.*,
f.f1,
f.f2
FROM
hotm**e_rates r,
hotm**e_friends f
WHERE
(f.f1 = '$user'
AND r.username = f.f2)
OR (f.f2 = '$user'
AND r.username = f.f1)
我不完全确定上述内容是否有效,因为它会在不同的字段上动态加入......这可能会有问题而且我没有测试过,如果它不起作用那么你应该能够做到这一点使用union,分别连接f1和f2并将结果集合并在一起:
( SELECT
r.*,
f.f1,
f.f2
FROM
hotm**e_rates r,
hotm**e_friends f
WHERE
f.f1 = '$user'
AND r.username = f.f2
) UNION (
SELECT
r.*,
f.f1,
f.f2
FROM
hotm**e_rates r,
hotm**e_friends f
WHERE
f.f2 = '$user'
AND r.username = f.f1
)