带条件的PHP选择查询

带条件的PHP选择查询,php,mysql,sql,Php,Mysql,Sql,这是我用来显示某些消息的选择代码,现在我想添加1个条件: $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 =

这是我用来显示某些消息的选择代码,现在我想添加1个条件:

$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());
所以我可以把它放在我的完整代码中。 我已经试过了,但没有效果。还是缺少/错误的代码?
请帮忙。 谢谢你像这样

AND M.uid_fk='$uid'

我假设您想将
M.uid\u fk=“.uid.”
置于
WHERE
条件中。(.)运算符实际上不是必需的,因为您的查询周围有双引号,但我还是喜欢使用它。

如果您在提出此问题之前先搜索会更好:

无论如何: 检查新_列的位置

$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());

您应该将其放在
WHERE
子句中,并使用ANSI SQL-92,如下所示:

$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());
注意:这种方式的代码容易受到攻击,请改用PDO或prepared语句。有关更多详细信息,请参见:

您可以在
WHERE
子句之后的任意*位置添加它。尝试使用此更新的查询

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的东西injections@Nagini-它如何没有效果?有错误吗?不返回任何数据?尝试删除条件
和M.uid\u fk='$uid'
,并检查您的数据,可能不包含该Id。@Nagini此外,在应用程序代码中使用查询之前,请尝试在中运行并调试该查询
$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);