简体   繁体   English

PHP / MYSQL-数据检索

[英]PHP/MYSQL - Data retrieval

Going by the advice that join are better than nested queries, I've converted all my nested queries to join . 通过建议去join比嵌套查询更好,我将我所有的嵌套查询到join However, upon converting to join , I'm unable to retrieve data into my array from the SQL result. 但是,在转换为join ,我无法从SQL结果检索数据到数组中。

Here are my queries : 这是我的查询:

Without join 没有加入

$a="SELECT F_DATE, COUNT(F_DATE) as COUNT_F 
    from FWH 
    where FI_NAME IN 
    ( 
       SELECT I_NAME from INS_W WHERE INSTANCE_ID IN 
       (
         SELECT I_MAP_ID FROM T_MAP where T_MAP_ID = 
         (
           SELECT T_ID FROM TWY WHERE T_NAME = 'abc'
          )
        )
    ) 
    AND F_DATE between '$S_D' AND '$E_D'
    GROUP BY F_DATE";

With join 与加入

$a="SELECT t1.F_DATE AS DATE_F, COUNT(t1.F_DATE) as COUNT_F
    from FWH t1 
    JOIN INS_W t2 ON(t1.FI_NAME = t2.I_NAME) 
    JOIN T_MAP t3 ON(t2.INSTANCE_ID = t3.I_MAP_ID) 
    JOIN TWY t4 ON(t3.T_MAP_ID = t4.T_ID) 
    WHERE t4.T_NAME = 'abc' AND
    t1.F_DATE BETWEEN '$S_D' AND 'E_D'GROUP BY t1.F_DATE";

Here's the PHP code to retrieve data 这是检索数据的PHP代码

$link = mysql_connect("ip", "user", "passs");
$dbcheck = mysql_select_db("db");   
if ($dbcheck) {
    $chart_array_1[] = "['F DATE','F COUNT']";
    $result = mysql_query($a);
    if (mysql_num_rows($result) > 0) {
        while ($row = mysql_fetch_assoc($result)) {
            $f_date=$row["DATE_F"];
            $f_count=$row["COUNT_F"];
            $chart_array_1[]="['".$f_date."',".$f_count."]";
        }
    }
}
mysqli_close($link);

The SQL queries themselves run fine when tested directly on MySQL DB. 直接在MySQL DB上测试时,SQL查询本身运行良好。

For some reason, when I use joins, I'm forced to use row[0], row[1] etc instead of fetching values using the name of column. 出于某种原因,当我使用联接时,我被迫使用row [0],row [1]等,而不是使用column名称来获取值。 I do not understand the reason behind this. 我不明白其背后的原因。 However, this is the only way out in my case. 但是,这是我的唯一出路。 Code below for those who may get stuck in a similar situation as me. 下面的代码适用于可能陷入与我类似情况的人。

$link = mysql_connect("ip", "user", "passs");
$dbcheck = mysql_select_db("db");   
if ($dbcheck) {
    $chart_array_1[] = "['F DATE','F COUNT']";
    $result = mysql_query($a);
    if (mysql_num_rows($result) > 0) {
        while ($row = mysql_fetch_assoc($result)) {
            $chart_array_1[]="['".$row[0]."',".$row[1]."]";
        }
    }
}
mysqli_close($link);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM