首页 > 解决方案 > 有没有办法在一个 data.php 文件中进行多个查询?

问题描述

在这里与这个问题有关

data.php我有多个 ajax 调用,每个调用在文件中都有自己的查询。这里只有一个 data.php 文件,但实际上会有 2 个带有自己的查询。有没有办法让 1 个文件在 1 个data.php文件中有多个查询?

这是我的代码:

google.charts.load('current', {
  packages: ['corechart', 'bar']
}).then(function () {
  $.ajax({
    url: 'data.php',
    dataType: 'json'
  }).done(drawChart1);

  $.ajax({
    url: 'data.php',
    dataType: 'json'
  }).done(drawChart2);
});

function drawChart1(result) {
  ...
}

function drawChart2(result) {
  ...
}

数据.php

<?php
require_once 'database.php';
$stmt = $conn->prepare('select * from product');
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_OBJ);
echo json_encode($results); 
?>

数据库.php

<?php
$conn = new PDO('mysql:host=192.168.99.100;dbname=demo','root', 'root');
?>

标签: phpajax

解决方案


您可以通过将多次调用的结果存储到数组中来实现此目的:

数据.php

$stmt = $conn->prepare('select * from product');
$stmt->execute();
$products = $stmt->fetchAll(PDO::FETCH_OBJ);

$stmt = $conn->prepare('select * from customer');
$stmt->execute();
$customer = $stmt->fetchAll(PDO::FETCH_OBJ);

$data = [
    'products' => $products,
    'customers' => $customers
];

echo json_encode($data); 

然后在你的javascript中:

google.charts.load('current', {
  packages: ['corechart', 'bar']
}).then(function () {
  $.ajax({
    url: 'data.php',
    dataType: 'json'
  }).done(drawCharts(data));
});

从您的 drawCharts 函数中,访问每个结果集,例如data.productsdata.customers


推荐阅读