簡體   English   中英

如何從SQL數據庫檢索兩個結果

[英]How to retrieve two results from SQL Database

我正在使用使用CPanel的SQL數據庫使用PHP服務器。

我正在使用SQL查詢從數據庫中檢索值(數字),並將它們傳遞到單獨的javascript文件。 為了實現這一點,我首先在一個單獨的PHP文件上創建了一個查詢,該查詢獲取了以下信息:

文件名:SQLamountofusers.php

<?php
$query = sprintf("SELECT COUNT( * ) as c
FROM  `applications` 
JOIN  `users` ON ( users.id = applications.id_m ) 
WHERE  `cdate` > CURRENT_DATE -30"); 

$result = mysql_query($query);

$res = mysql_fetch_assoc($result);
echo json_encode($res[c]);

mysql_free_result($result);
?>

然后,使用AJAX將回顯的結果傳遞到JS文件:

文件名:canvas.js

$(document).ready( function() {
    $(usersreport).click(function() {
        $.ajax({
            type: 'POST',
            url: 'js/SQLamountofusers.php',
            data: 'id=usersreport',
            dataType: 'json',
            cache: false,
            success: function(result) {

            var num = Number(result);

            { label: "Active",  y: num},
            { label: "Inactive",  y: 0  },

    });
});

現在這是我想要實現的,但不知道如何:

我想將兩個值傳遞給canvas.js文件,一個是活動用戶(需要在數據庫中進行一次查詢(上面已經寫過)),另一個是非活動用戶(需要進行另一次查詢)-那么如何我將兩個結果放入JS文件?

我應該使用其他查詢來創建另一個單獨的PHP文件,還是有另一種方法來實現它?

嘗試將查詢調整為:

<?php
$query = sprintf("SELECT
    COUNT(DISTINCT IF(cdate > CURRENT_DATE - 30, users.id, NULL)) AS c,
    COUNT(DISTINCT IF(cdate <= CURRENT_DATE - 30, users.id, NULL)) AS d
FROM applications
    JOIN users ON users.id = applications.id_m");

$result = mysql_query($query);

$res = mysql_fetch_assoc($query);
echo json_encode($res);

mysql_free_result($result);
?>

然后您可以調整canvas.js以將結果拉為

$(document).ready( function() {
    $(usersreport).click(function() {
        $.ajax({
            type: 'POST',
            url: 'js/SQLamountofusers.php',
            data: 'id=usersreport',
            dataType: 'json',
            cache: false,
            success: function(result) {

            var num = Number(result.c);
            var num2 = Number(result.d);

           { label: "Active",  y: num},
           { label: "Inactive",  y: num2 },

     });
});

免責聲明:我尚未測試此代碼,只是提供了它作為您可以嘗試的潛在解決方案。

文件名:SQLamountofusers.php

<?php
$query = "SELECT COUNT( * ) as c
FROM  `applications` 
JOIN  `users` ON ( users.id = applications.id_m ) 
WHERE  `cdate` > CURRENT_DATE -30"; 

$result = mysql_query($query);

$res = mysql_fetch_assoc($result);
$data = array('active' => $res['c']);

$query2 = "SELECT ...";
$result2 = mysql_query($query2);
$res2 = mysql_fetch_assoc($result2);
$data['inactive'] = $res2['c']);
echo json_encode($data);
?>

文件名:canvas.js

$(document).ready( function() {
    $(usersreport).click(function() {
        $.ajax({
            type: 'POST',
            url: 'js/SQLamountofusers.php',
            data: 'id=usersreport',
            dataType: 'json',
            cache: false,
            success: function(result) {

            { label: "Active",  y: result.active},
            { label: "Inactive",  y: result.inactive},

    });
});

只需將第二個sql查詢替換為所需的一個即可。

編輯:基本上,您可以通過json數組和對象。 因此,您可以輕松傳遞任意數量的數字。 准備具有所需值的php數組,然后對其進行json_encode(),您將在js端獲得具有值的對象或數組。 如果您不使用$ arr = array(1,2,3)之類的鍵來編碼php數組, 您將在js端獲得數組。 您可以將其引用為a [0],a [1]等。如果您對關聯的php數組進行編碼,即使用$ arr = array('k1'=> 1,'k2'=> 2)之類的鍵進行編碼。 您將在js端獲得一個對象。 並將其引用為o.k1,o.k2等。

嘗試: $query = "SELECT COUNT( * ) as c FROM applications JOIN users ON ( users.id = applications.id_m ) WHERE cdate > CURRENT_DATE -30";

沒有sprintf();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM