Php 查询返回数据以及来自另一个表的数据

Php 查询返回数据以及来自另一个表的数据,php,mysql,sql,Php,Mysql,Sql,我在PHP编程方面很有经验,对于我正在做的一个小项目,我想从数据库中获取一些信息 我制作了自己的sql处理程序,带有一个单例,这样连接就不会溢出 这是我的查询功能: <?php public static function query($q){ $a = ''; $b = ''; self::$queries[] = $q; if(strpos($q, 'INSERT') !== false){

我在PHP编程方面很有经验,对于我正在做的一个小项目,我想从数据库中获取一些信息

我制作了自己的sql处理程序,带有一个单例,这样连接就不会溢出

这是我的查询功能:

<?php    
public static function query($q){
        $a = '';
        $b = '';
        self::$queries[] = $q;
        if(strpos($q, 'INSERT') !== false){
            if(!mysql_query($q)){
                self::$err[] = mysql_error()."<br />Query: ".$q;
                return false;
            }
            return true;
        } elseif(strpos($q, 'SELECT') !== false){
            echo $q;
            if(!$res = mysql_query($q)){
                self::$err[] = mysql_error()."<br />Query: ".$q;
            return false;
            } else {
                if(mysql_num_rows($res) > 1){

                    while($r = mysql_fetch_assoc($res)){
                        foreach($r as $key => $val){
                            self::$results[$r['id']][$key] = $val;
                        }
                    }
                    return self::$results;
                } else {
                    $res = mysql_fetch_assoc($res);
                    foreach($res as $key => $val){
                            self::$results[$res['id']][$key] = $val;
                    }
                    return self::$results;
                }
            }
        } elseif(strpos($q, 'UPDATE') !== false){
            if(!mysql_query($q)){
                self::$err[] = mysql_error()."<br />Query: ".$q;
            return false;
            }
            return true;
        } elseif(strpos($q, 'DELETE') !== false){
            if(!mysql_query($q)){
                self::$err[] = mysql_error()."<br />Query: ".$q;
            return false;
            }
            return true;
        }
    }
?>
运行此查询时出现的问题是从loc_npc中选择id、loc_id、npc_id,其中loc_id=9 它以某种方式从另一个表返回数据,以及正确的数据

查询在另一个处理程序中运行:

public function getLocationNpc($id){
    //return $this->sql->query("SELECT e.`name`, e.`desc`, e.`id` FROM npcs e LEFT JOIN(loc_npc i CROSS JOIN locations l) ON (e.id = i.npc_id AND i.loc_id = l.id) WHERE i.loc_id = $id");
    $npcH = new npcHandler();
    $npcId = $this->sql->query("SELECT id, loc_id, npc_id FROM loc_npc WHERE loc_id = $id");
    echo '<pre>'.print_r($npcId, true).'</pre>';
    foreach($npcId as $nId){
        $npcArr[] = $npcH->getNpc($nId['npc_id']);
    }
    return $npcArr;
}
我在phpmyadmin中测试了查询,它只返回正确的数据,这与通过我的处理程序执行的查询不同


我很确定这是一个小而愚蠢的东西,但我就是找不到它。

您似乎没有清除self的内容::$results anywhere-您是否从以前运行的查询中获得结果?

请不要在标题中添加标记。欢迎使用堆栈溢出。不再维护它们,并且已开始弃用过程,请参阅。而是学习,使用或;会帮你决定哪一个。如果你选择PDO,很抱歉,这是stackoverflow上的新帖子。没问题,我们都在这里学习:虽然我一直想学习PDO,但我还没有时间开始学习教程。但是我所尝试的应该仍然可以通过mysql_uu函数实现,对吗?我不打算长时间使用它,它只是为了测试一些东西。哦,天哪,它解决了它。谢谢我是个白痴。。。哈哈
public function getLocationNpc($id){
    //return $this->sql->query("SELECT e.`name`, e.`desc`, e.`id` FROM npcs e LEFT JOIN(loc_npc i CROSS JOIN locations l) ON (e.id = i.npc_id AND i.loc_id = l.id) WHERE i.loc_id = $id");
    $npcH = new npcHandler();
    $npcId = $this->sql->query("SELECT id, loc_id, npc_id FROM loc_npc WHERE loc_id = $id");
    echo '<pre>'.print_r($npcId, true).'</pre>';
    foreach($npcId as $nId){
        $npcArr[] = $npcH->getNpc($nId['npc_id']);
    }
    return $npcArr;
}