$query = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.full_name, U.profile_pic, U.username, U.uid FROM t_haps_wall M, t_users U, t_join_user F WHERE
M.uid_fk=U.uid AND F.uid=U.uid AND M.uid_fk = F.uid AND F.status='joining' order by M.msg_id desc ") or die(mysql_error());
这是我的SELECT代码以显示一些消息,现在我想添加1个条件:
AND M.uid_fk='$uid'
所以我可以把它放在我的完整代码中。
我已经尝试但没有效果。或者缺少什么/错误的代码?
请帮忙。
谢谢
答案 0 :(得分:1)
您应该将它放在WHERE
子句中,并使用ANSI SQL-92,如下所示:
SELECT
M.msg_id,
M.uid_fk,
M.message,
M.created,
U.full_name,
U.profile_pic,
U.username,
U.uid
FROM t_haps_wall M
INNER JOIN t_users U ON M.uid_fk = U.uid
INNER JOIN t_join_user F ON F.uid = U.uid
WHERE F.status = 'joining'
AND M.uid_fk ='$uid' -- your condition here
order by M.msg_id desc
请注意:您的代码以这种方式容易受到SQL injection的攻击,而是使用PDO或预备语句。有关详细信息,请参阅此处:
答案 1 :(得分:0)
喜欢这个吗?..
$query = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.full_name, U.profile_pic, U.username, U.uid FROM t_haps_wall M, t_users U, t_join_user F WHERE
M.uid_fk=U.uid AND F.uid=U.uid AND M.uid_fk = F.uid AND F.status='joining' AND M.uid_fk=".$uid." order by M.msg_id desc ") or die(mysql_error());
我原以为您希望将M.uid_fk=".$uid."
置于WHERE
条件下。 (。)运算符不是必需的,因为你的查询周围有双引号,但无论如何我都想使用它。
答案 2 :(得分:0)
如果你在提出这个问题之前先搜索了一下会更好::
无论如何:: 检查NEW_COLUMN的位置
$query = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.full_name, U.profile_pic, U.username, U.uid, NEW_COLUMN FROM t_haps_wall M, t_users U, t_join_user F WHERE
M.uid_fk=U.uid AND F.uid=U.uid AND M.uid_fk = F.uid AND F.status='joining' order by M.msg_id desc ") or die(mysql_error());
答案 3 :(得分:0)
您可以在WHERE
子句后添加所需的 *。尝试使用此更新的查询
$sql =
"
SELECT
M.msg_id,
M.uid_fk,
M.message,
M.created,
U.full_name,
U.profile_pic,
U.username,
U.uid
FROM
t_haps_wall M,
t_users U,
t_join_user F
WHERE
M.uid_fk=U.uid
AND F.uid=U.uid
AND M.uid_fk = F.uid
AND F.status='joining'
AND M.uid_fk='".$uid."'
ORDER BY
M.msg_id DESC
";
$query = mysql_query($sql);
*我最后添加了它。虽然,我说无论在哪里,它的工作;它不是严格来说最优化的方式。条件的放置通常会影响查询的运行效率