PHP面向对象编程多查询

PHP面向对象编程多查询,php,Php,所以,我有这个问题。我正在尽力实践面向对象编程,我从这个半面向对象脚本开始。它是如何工作的,我有一个叫做portal_robot_error的表,它包含了所有机器人的错误。然后我有另一个主表叫做portal_robot_service,它是服务的最高级别。连接到此表,我还有两个与portal_robot_服务表链接的表。这些被称为门户服务机器人错误服务和门户服务机器人更改服务,其中包含服务的详细信息。我希望我已经把这部分解释得足够好了 这就是我想做的。当用户搜索机器人时,所有错误和所有服务都应以

所以,我有这个问题。我正在尽力实践面向对象编程,我从这个半面向对象脚本开始。它是如何工作的,我有一个叫做portal_robot_error的表,它包含了所有机器人的错误。然后我有另一个主表叫做portal_robot_service,它是服务的最高级别。连接到此表,我还有两个与portal_robot_服务表链接的表。这些被称为门户服务机器人错误服务和门户服务机器人更改服务,其中包含服务的详细信息。我希望我已经把这部分解释得足够好了

这就是我想做的。当用户搜索机器人时,所有错误和所有服务都应以按日期排序的列表结束

例如: 用户搜索robot 21。 结果: 错误1-日期、机器人、位置、错误代码等。 错误2-日期、机器人、位置、错误代码等。 服务1-日期、机器人、服务类型等。 错误3-日期、机器人、位置、错误代码等。 错误4-日期、机器人、位置、错误代码等。 等等

由于脚本现在只显示错误,如何在列表中显示服务

提前谢谢

<?php   
elseif(!empty($query) && empty($inDate) && empty($id) && empty($dateLike)) {
$arr    = array();
$q      = mysql_query("SELECT * FROM portal_robot_error WHERE robot = '$robot'");

while($r = mysql_fetch_object($q)) {

    $m = "Robot ".$r->robot;
    $s = mysql_query("SELECT * FROM portal_service WHERE service_date >= '$this->lastService' AND service_date <= '$r->date' AND service_module = '$m' AND service_id > '$this->lastId' LIMIT 1");

    if(mysql_num_rows($s) > 0) {
        echo "SELECT * FROM portal_service WHERE service_date >= '$this->lastService' AND service_date <= '$r->date' AND service_module = '$m' AND service_id > '$this->lastId' LIMIT 1<br />";
        $z              = mysql_fetch_object($s);
        $this->lastId   = $z->service_id;

        if($z->service_type == "Errorservice") {
            $e                      = mysql_query("SELECT * FROM portal_service_robot_errorservice WHERE service_id = '$z->service_id'");
            $f                      = mysql_fetch_object($e);
            $errorservice_track     = $f->tracksensor;
            $errorservice_gripper   = $f->gripper;
            $errorservice_cover     = $f->cover;
            $errorservice_wheel     = $f->wheel;
            $service_text           = "Errorservice HIHIHIHI".$this->lastId;
            $service                = new Error($this->lastId, $z->service_date, "", "", $z->service_module, "", "", $z->service_type, $z->service_comment, $service_text, "", $z->service_user);
            array_push($arr, $service);                     
        }
        elseif($z->service_type == "Changeservice") {
            $e                      = mysql_query("SELECT * FROM portal_service_robot_changeservice WHERE service_id = '$z->service_id'");
            $f                      = mysql_fetch_object($e);
            $service_text           = "Changeservice HIHIHIHI".$this->lastId;
            $service                = new Error($this->lastId, $z->service_date, "", "", $z->service_module, "", "", $z->service_type, $z->service_comment, $service_text, "", $z->service_user);
            array_push($arr, $service);
        }
    }
    else {
        $n   = new Error($r->error_id, $r->date, $r->stoptime, $r->starttime, $r->robot, $r->rob_status, $r->position, $r->error_code, $r->observation, $r->solution, $r->downtime, $r->user);
        array_push($arr, $n);
        $this->lastService = $r->date;
    }

}   
return $arr;
}
?>

好的,我找到了解决办法。当我们将数据导入数据库时,出现了一些问题,并在所有内容的末尾添加了一个\r。我的问题是if($z->service_type==“Changeservice”)没有命中。那是因为\r结尾没有人看到


我将阅读PDO和MySQLi:)

这里很难给出建议,因为我们不太了解您在这里使用的完整变量……到底是什么失败了?如果总是得到最后一个else情况的结果,请检查对
$s
…的查询,否则调试
错误
构造函数,并检查在哪个参数中插入了哪些值。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO。