Php sql哪种连接
我有一个论坛和即时通讯通过一个线程的回复循环,并为每个实例的用户信息查询成员数据库 如果可能的话,我想在一个查询中完成。我需要什么样的sql连接来完成这个任务? 以下是我现有的代码:Php sql哪种连接,php,mysql,sql,join,Php,Mysql,Sql,Join,我有一个论坛和即时通讯通过一个线程的回复循环,并为每个实例的用户信息查询成员数据库 如果可能的话,我想在一个查询中完成。我需要什么样的sql连接来完成这个任务? 以下是我现有的代码: $sql_result = mysql_query("SELECT * FROM forum_replies WHERE topic='$topic_id' AND del=0 ORDER BY date asc", $db); while($rs = mysql_fetch_array($sql_result)
$sql_result = mysql_query("SELECT * FROM forum_replies WHERE topic='$topic_id' AND del=0 ORDER BY date asc", $db);
while($rs = mysql_fetch_array($sql_result))
{
$sql_result2 = mysql_query("SELECT * FROM members WHERE id='$rs[author]'", $db);
$rs2 = mysql_fetch_array($sql_result2);
查询:
SELECT * FROM forum_replies WHERE topic='$topic_id' AND del=0 ORDER BY date asc
SELECT * FROM mobsters WHERE id='$rs[author]'"
我猜你在找这样的东西:
select *
from forum_replies as fr
left join mobsters as m on m.id = fr.author
where
fr.topic = :topic_id
and del = 0
order by fr.date asc
您希望在每行旁边选择回复和作者的数据:topic_id是您的topic id的位置,您应该在其中查找并使用它,而不是使用mysql_函数
不过,我有一个重要的建议:不要选择*,而是应该指定您真正想要从表中返回的内容,以及您真正需要的内容
例如:
select fr.id, fr.title, fr.date, m.id, m.nickname
...
这应该让你开始:
SELECT *
FROM forum_replies fp
JOIN mobsters mb on mb.id = fp.author
WHERE topic='$topic_id' AND del=0 ORDER BY date asc
它说的有点英语
给我论坛回复表中的所有列以及mobsters表中id与forum\u replies表中author字段匹配的所有列。如果您试图从forum\u replies中获取所有内容,无论有多少mobsters,那么您都可以进行左连接
SELECT * FROM forum_replies LEFT JOIN mobsters on mobsters.id=forum_replies.author;
您将需要修复选择帐户中重复的列名。请尝试以下操作:
SELECT * FROM forum_replies
LEFT JOIN mobsters ON mobsters.id = forum_replies.author
WHERE forum_replies.topic = :ID AND forum_replies.del = 0
你到底想达到什么目的?为了扩展Mike的评论,你需要向我们展示你对输出的期望。当我看到PHP代码没有用于防止漏洞时,我很担心。我希望您正在清理尚未粘贴到此处的代码中的变量。如果没有,请考虑重新编写代码,使用PDO编写的语句,而不是尝试清理您的变量。