Php 合并两个SELECT语句并返回一个JSON响应
我想合并两个select语句的结果并返回一个JSON响应。基本上,我希望返回找到的每个记录的id、名称、公司和电子邮件,但如果票证与POST数据匹配,还需要返回签名列 另外,是否可以删除最终阵列中的任何重复记录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
$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。但我想说,如果数量太多,可能会影响你的表现