如何在php Web服务中显示2个子查询的结果并生成json编码

时间:2018-09-28 20:06:32

标签: php json web-services mysqli

我正在做Web服务,但是我需要从两个不同的表中获取数据,并考虑到关系表中查询的结果

如何在考虑3个查询的情况下对两个不同的表进行2个查询以获得这些查询的数据?

我有一个关系表,其中保留了ID,需要查询该表,然后对两个不同的表进行两次查询以获取数据并将它们一起显示在json中,以便能够使用它

示例:

$ query1 = "select * from family where ID = 2";

while ($ query1) {
$ consult2 = "select * from adults where son = $ query1 ['ID']";

$ consult3 = "select * from siblings where son = $ query1 ['ID']";
}

我用于查询的代码是这样,在PHP中:

require 'Database.php';

class Union {
    function __construct(){
    }

   public static function getById($id_vehiculo){
        // Consulta del vehiculo
        $consulta = "SELECT id_relacion, id_operador, id_vehiculo FROM uniontaxioperador WHERE id_vehiculo = ?";    

       try {
            // Preparar sentencia
            $comando = Database::getInstance()->getDb()->prepare($consulta);
            // Ejecutar sentencia preparada
            $comando->execute(array($id_vehiculo));
            // Capturar primera fila del resultado
            $row = $comando->fetch(PDO::FETCH_ASSOC);
            return $row;

        } catch (PDOException $e) {
            // Aquí puedes clasificar el error dependiendo de la excepción
            // para presentarlo en la respuesta Json
            return -1;
        }
    }
}

并显示json是这样的:

require 'WS_consulta.php';

if ($_SERVER['REQUEST_METHOD'] == 'GET') {

    if (isset($_GET['id_vehiculo'])) {

        // Obtener parámetro id_vehiculo
        $parametro = $_GET['id_vehiculo'];

        // Tratar retorno
        $retorno = Union::getById($parametro);


        if ($retorno) {

            $union["estado"] = "1";
            $union["id_relacion"] = $retorno;
            // Enviar objeto json de la union
            print json_encode($union);
        } else {
            // Enviar respuesta de error general
            print json_encode(
                array(
                    'estado' => '2',
                    'mensaje' => 'No se obtuvo el registro'
                )
            );
        }

    } else {
        // Enviar respuesta de error
        print json_encode(
            array(
                'estado' => '3',
                'mensaje' => 'Se necesita un identificador'
            )
        );
    }
}

0 个答案:

没有答案