PHP SELECT查询带条件

时间:2012-11-21 08:51:15

标签: php mysql sql

$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'

所以我可以把它放在我的完整代码中。 我已经尝试但没有效果。或者缺少什么/错误的代码?
请帮忙。 谢谢

4 个答案:

答案 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);

*我最后添加了它。虽然,我说无论在哪里,它的工作;它不是严格来说最优化的方式。条件的放置通常会影响查询的运行效率