Php 合并两个SELECT语句并返回一个JSON响应

Php 合并两个SELECT语句并返回一个JSON响应,php,mysql,Php,Mysql,我想合并两个select语句的结果并返回一个JSON响应。基本上,我希望返回找到的每个记录的id、名称、公司和电子邮件,但如果票证与POST数据匹配,还需要返回签名列 另外,是否可以删除最终阵列中的任何重复记录 $selectTable = "tickets_info"; $selectColumns = "id, name, company, email"; $stmt = $conn->prepare("SELECT $selectColumns FROM $selectTable

我想合并两个select语句的结果并返回一个JSON响应。基本上,我希望返回找到的每个记录的id、名称、公司和电子邮件,但如果票证与POST数据匹配,还需要返回签名列

另外,是否可以删除最终阵列中的任何重复记录

$selectTable = "tickets_info";
$selectColumns = "id, name, company, email";

$stmt = $conn->prepare("SELECT $selectColumns FROM $selectTable WHERE created BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY) AND NOW() ORDER BY id DESC");
$stmt->execute();

if (isset($_POST['ticket'])) {

    $stmt2 = $conn->prepare("SELECT signature FROM tickets_info WHERE ticket = ?");
    $stmt2->execute(array($_POST['ticket']));

}

$results = $stmt->fetchAll();

if (isset($_POST['ticket'])) {

    $results = $stmt2->fetchAll();

}

if ($results) {

    header("Content-Type: application/json"); 
    echo json_encode($results);

}

正确的方法是使用。如果不想使用join,可以首先将结果放在两个不同的数组中。然后是这两个独立的数组,然后是任何重复的数组


请记住,您希望两个Sql查询具有相同的键。

我将使用以下内容循环查询响应:

$stmt = $conn->prepare("SELECT id, name, company, email, signature, ticket FROM tickets_info WHERE created BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY) AND NOW() ORDER BY id DESC");
$stmt->execute() ;
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

foreach ($rows as $row) {
  $response[$i]['id'] = $row['id'] ;
  $response[$i]['name'] = $row['name'] ;
  $response[$i]['company'] = $row['company'] ;
  $response[$i]['email'] = $row['email'] ;

  if ($row['ticket'] == $_POST['ticket']) $response[$i]['signature'] = $row['signature'] ;
  else $response[$i]['signature'] = NULL ;

  $i++ ;
}

header("Content-Type: application/json"); 
echo json_encode($response);

您只需执行一次SQL查询并循环一次响应。如果该行与AJAX票证查询匹配,则将签名添加到对象数组中。如果不是,我们将签名值设置为
null

哪里是
$\u POST['ticket']
来自哪里?从ajax请求发布时,我首先会选择一个
选择
包括
签名。这样做的结果与预期结果会有什么不同?您能编辑您的问题以包含所需json的示例吗?签名字段包含大量数据,我不希望每个结果都返回这些数据。为了节省带宽,我宁愿只在特别需要时才包含签名。签名列是否唯一?我不确定这里需要的是加入。只有一个表。我想说使用while循环将结果放入数组,然后使用merge和array_unique。但我想说,如果数量太多,可能会影响你的表现