Iz3k34l
Iz3k34l

Reputation: 130

table doesnt exist

I have created a query that loops through a group of table ID's to get a sum of their combined values. with error handling i get a "Table 'asterisk.custom_' doesn't exist" error and the query is killed obviously. but if i remove the error handling then i get an "mysql_fetch_array() expects parameter 1 to be resource" and the query completes as it should. Thank in advance for your help.

    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++;       

}

Update: The table exist in the database: custom_2346579543413 custom_5466546513564 they are created by the dialer software and im calling them from another query that provides me the numeric part of the table name so this query loops through the values in customID array to make the query, Thanks again

Update: Sammitch, thank you for the suggestion, however they did not work.

Solution:

Thanks Marc, you confirmed a suspicion i had in that it was looping correctly but for some reason it was looping more times that there we keys. so i echoed $i to confirm and in fact it was it was outputting 0,1,2,3 and since i know there is only 3 keys the last one didn't return anything and so error handling caught it and killed the entire loop and why it appeared correct when error handling was turned off. The solution was actually rather simple and it was in the while loop evaluation string i had used

    while($i<=$numrows) 

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

Upvotes: 0

Views: 131

Answers (1)

Sammitch
Sammitch

Reputation: 32232

and the query completes as it should.

No, it doesn't. "mysql_fetch_array() expects parameter 1 to be resource" means "the query failed, and you didn't bother to check before calling mysql_fetch_array()".

Your problem is that variable expansion inside of a string doesn't like array indexes. You need to change:

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

To:

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

Or:

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

For it to work properly.

Upvotes: 4

Related Questions