首页 > 解决方案 > 如何在同一个向量中组合 2 个查询(json_encode 和 php)

问题描述

我相信这是一个简单的问题,我想同时运行这两个查询,但我不知道如何

大家好,我相信这是一件简单的事情,我想执行这两个查询

SELECT * FROM diligencias WHERE idprocesso = '$process_id'SELECT * FROM processos WHERE id = '$process_id'

仅适用于一个查询的代码:

<?php
include("../../includes/conectar.php");

if(isset($_POST['id']) && isset($_POST['id']) != "")
{
    $process_id = $_POST['id'];
    $qryLista = mysqli_query($con, "SELECT * FROM processos WHERE id = '$process_id'");

    while($resultado = mysqli_fetch_assoc($qryLista)){
        $vetor[] = array_map('utf8_encode', $resultado); 
    }    

    echo json_encode($vetor);
}
?>

标签: phpmysqljson

解决方案


如果表没有相同的列名,您可以JOIN使用以下查询来简单地使用它们:

SELECT *
FROM processos p
JOIN diligencias d ON d.idprocesso = p.id
WHERE p.d = '$process_id'

如果表确实具有相似的列名,您将需要为重叠名称提供列别名,例如

SELECT p.*, d.id AS diligencias_id, d.xxx AS diligencias_xxx
FROM processos p
JOIN diligencias d ON d.idprocesso = p.id
WHERE p.d = '$process_id'

请注意,在您现有的代码中

isset($_POST['id']) != ""

应该

$_POST['id'] != ""

此外,您很容易受到 SQL 注入的影响,并且应该使用准备好的查询。例如:

$process_id = $_POST['id'];
$stmt = $con->prepare("SELECT *
    FROM processos p
    JOIN diligencias d ON d.idprocesso = p.id
    WHERE p.d = ?");
$stmt->bind_param('i', $process_id);
$qryLista = $stmt->get_result();
while($resultado = $qryLista->fetch_assoc()){
    $vetor[] = array_map('utf8_encode', $resultado); 
}
echo json_encode($vetor);

推荐阅读