2013-04-03 4 views
0

Я создал запрос, который проходит через группу идентификаторов таблицы, чтобы получить сумму их комбинированных значений. с обработкой ошибок я получаю ошибку «Таблица» 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++;  

} 

Update: Таблица существует в базе данных: custom_2346579543413 custom_5466546513564 они созданы с помощью программного обеспечения дозвона и им называя их из другого запроса, который предоставляет мне числовую часть имени таблицы поэтому этот запрос петли через значения в массиве customID, чтобы сделать запрос, Еще раз спасибо

Обновление: Sammitch, спасибо за предложение, однако они не сработали.

Решение:

Благодаря Марк, вы подтвердили подозрение, я имел в том, что это было правильно зацикливание, но по какой-то причине это было зацикливание несколько раз, что там мы ключи. поэтому я повторил $ ​​i, чтобы подтвердить, и на самом деле это был вывод 0,1,2,3, и поскольку я знаю, что есть только 3 ключа, последний ничего не возвращал и поэтому обработка ошибок поймала его и убила весь цикл и почему это оказалось правильным, когда обработка ошибок была отключена. Решение было на самом деле довольно просто, и это было в строке оценки цикла в то время как я использовал

while($i<=$numrows) 

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

Создать таблицу? –

+1

Пожалуйста, не используйте mysql_: http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php – DessDess

+1

Удаление обработки ошибок - это как врач-ER, рассказывающий пациенту, "игнорируйте это пулевое отверстие в вашем сердце, просто запустите этот 50-мильный марафон ». –

ответ

4

и запрос завершается, как следует.

Нет, это не так. «mysql_fetch_array() ожидает, что параметр 1 является ресурсом« означает », запрос был неудачным, и вы не потрудились проверить перед вызовом mysql_fetch_array()».

Ваша проблема в том, что расширение переменной внутри строки не похоже на индексы массива. Вам нужно изменить:

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

To:

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

Или:

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

Для того, чтобы работать должным образом.

+1

naw. расширение массива с помощью переменных ключей отлично работает для SINGLE мерных массивов. для многомерного, THEN вам нужно обозначение '{}'. например 'echo '$ arr [1] [2]" 'будет выводить' Array [2] ', но' echo' {$ arr [1] [2]} "выводит ожидаемое значение из массива. Проблема в том, что OP, вероятно, имеет доступ к ключам массива, которых не существует, поэтому PHP просто выплевывает пустую строку, оставляя только имя 'custom_.whatever' как имя таблицы/поля. –

Смежные вопросы