Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php sql哪种连接_Php_Mysql_Sql_Join - Fatal编程技术网

Php 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连接来完成这个任务? 以下是我现有的代码:

$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编写的语句,而不是尝试清理您的变量。