0

我创建了一个查询,它遍历一组表 ID 以获得它们组合值的总和。通过错误处理,我得到一个“表 'asterisk.custom_' 不存在”错误,并且查询显然被终止了。但是如果我删除错误处理,那么我会得到一个“mysql_fetch_array() 期望参数 1 是资源”,并且查询应该完成。提前感谢您的帮助。

    include("currentday.php");
    //---used for testing passing variables
    //echo $customID[0];
    //echo "<br>".$numrows;

    $i = 0;
     while($i<=$numrows)
{

mysql_select_db("asterisk") or die(mysql_error()); //This line determines the database to use
    $query = "SELECT  
            vicidial_users.user,
            vicidial_users.full_name,
            sum(vicidial_agent_log.pause_sec) as sumPause,
            sum(custom_$customID[$i].d_amt) as sumDamnt,
            sum(custom_$customID[$i].up_amt) as sumUpamnt,
            sum(custom_$customID[$i].md_amt) as sumMdamnt,
            sum(custom_$customID[$i].s_amount) as sumSamnt,
            sum(vicidial_agent_log.dispo_sec)
        FROM
            vicidial_agent_log
        INNER JOIN
            vicidial_users
        ON
            (vicidial_agent_log.user = vicidial_users.user)
        INNER JOIN
            custom_$customID[$i]
        ON
            (vicidial_agent_log.lead_id = custom_$customID[$i].lead_id)
        WHERE
            vicidial_users.user = 'tcx'
        GROUP BY
            vicidial_users.full_name
        ORDER BY
            vicidial_agent_log.event_time DESC
        ";              

    $queryResult = mysql_query($query);// or die(mysql_error());    


    while ($rowResult = mysql_fetch_array($queryResult)) 
                {

             $pauseResult[] = $rowResult["sumPause"];
             $sumdamntResult[] = $rowResult["sumDamnt"];
             $sumupamntResult[] = $rowResult["sumUpamnt"];
             $summdamntResult[] = $rowResult["sumMdamnt"];
             $sumsamntResult[] = $rowResult["sumSamnt"];

                }
                //print_r($pauseResult);
                //echo $pauseResult[0];


    $i++;       

}

更新:该表存在于数据库中:custom_2346579543413 custom_5466546513564 它们是由拨号软件创建的,我从另一个查询中调用它们,该查询为我提供了表名的数字部分,因此该查询循环遍历 customID 数组中的值以进行查询,再次感谢

更新: Sammitch,谢谢你的建议,但他们没有工作。

解决方案:

谢谢 Marc,您证实了我的怀疑,即它循环正确,但由于某种原因,它循环的次数比我们键入的次数多。所以我回应了 $i 来确认,实际上它正在输出 0,1,2,3 并且因为我知道只有 3 个键,所以最后一个键没有返回任何东西,所以错误处理抓住了它并杀死了整个循环以及为什么关闭错误处理后它看起来是正确的。解决方案实际上相当简单,它在我使用的 while 循环评估字符串中

    while($i<=$numrows) 

    while($i<$numrows)//this worked, the equals part of that gave it an extra loop
4

1 回答 1

4

并且查询按原样完成。

不,它没有。“mysql_fetch_array() 期望参数 1 是资源”的意思是“查询失败,在调用 mysql_fetch_array() 之前你没有检查”。

您的问题是字符串内部的变量扩展不喜欢数组索引。你需要改变:

"sum(custom_$customID[$i].d_amt) as sumDamnt,"

至:

"sum(custom_{$customID[$i]}.d_amt) as sumDamnt,"

或者:

"sum(custom_" . $customID[$i] . ".d_amt) as sumDamnt,"

让它正常工作。

于 2013-04-03T15:35:03.070 回答