2010-09-14 2 views
1

Мой сайт отлично работает на моем локальном хосте. Но, когда я загрузить последнюю версию материала на сервер, я получаю следующее сообщение об ошибке:Работает на локальном хосте, но появляется ошибка при развертывании на сервере

[13-Sep-2010 20:40:22] PHP Notice: Undefined variable: query in /home/mysite/public_html/zendamf_remote/MyScoreData.php on line 143 
[13-Sep-2010 20:40:22] PHP Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/mysite/public_html/zendamf_remote/MyScoreData.php on line 146 
[13-Sep-2010 20:40:22] PHP Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/mysite/public_html/zendamf_remote/MyScoreData.php on line 156 
[13-Sep-2010 20:40:29] PHP Notice: Undefined variable: query in /home/mysite/public_html/zendamf_remote/MyScoreData.php on line 143 
[13-Sep-2010 20:40:29] PHP Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/mysite/public_html/zendamf_remote/MyScoreData.php on line 146 
[13-Sep-2010 20:40:29] PHP Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/mysite/public_html/zendamf_remote/MyScoreData.php on line 156 

код ниже:

Ниже то, что я ставлю на сервере. Он выдает указанную выше ошибку. Это не слишком красиво, но работает локально. Единственная разница между версией localhost и версией сервера - это путь для первого запроса. У меня есть правильный путь, поскольку он одинаковый для всех моих других php-классов.

<?php 
require_once('/home/mysite/connection/connection_mysite.php'); 
require_once('VOscore1.php'); 


class MyScoreData { 

public function getScoreData($schoolPollSelections) { 

     $schoolYear = $schoolPollSelections[0]; 
     $schoolType = $schoolPollSelections[1]; 
     $schoolGradeLevel= $schoolPollSelections[2]; 
     $schoolSubject = $schoolPollSelections[3]; 
     $myTable = 'mc_school_report_card_sy_'.$schoolYear; 
     $myTable2 = 'mc_school_scores_sy_'.$schoolYear; 


     if($schoolYear == '2009_2010') { 

      if($schoolType == 'both'){ 
       if($schoolSubject == 'M'){$query = "SELECT DISTINCT school_name_sy09_10 AS school, ROUND(math_below_basic) AS percent_below_basic, ROUND(math_basic) AS percent_basic, ROUND(math_proficient) AS percent_proficient, ROUND(math_advanced) AS percent_advanced, ROUND(math_proficient + math_advanced) AS percent_proficient_and_advanced FROM mc_school_scores_latlong WHERE category='$schoolGradeLevel' AND lea!='n' AND year='2010' AND status_sy09_10!='closed' AND status_sy09_10!='unknown' AND math_below_basic IS NOT NULL AND grade_school_type_sy09_10!='Special Education School' ORDER BY percent_proficient_and_advanced DESC";} 

     if($schoolSubject == 'R'){$query = "SELECT DISTINCT school_name_sy09_10 AS school, ROUND(reading_below_basic) AS percent_below_basic, ROUND(reading_basic) AS percent_basic, ROUND(reading_proficient) AS percent_proficient, ROUND(reading_advanced) AS percent_advanced, ROUND(reading_proficient + reading_advanced) AS percent_proficient_and_advanced FROM mc_school_scores_latlong WHERE category='$schoolGradeLevel' AND lea!='n' AND year='2010' AND status_sy09_10!='closed' AND status_sy09_10!='unknown' AND reading_below_basic IS NOT NULL AND grade_school_type_sy09_10!='Special Education School' ORDER BY percent_proficient_and_advanced DESC";} 
      } 

      else{ 

      if($schoolSubject == 'M'){$query = "SELECT DISTINCT school_name_sy09_10 AS school, ROUND(math_below_basic) AS percent_below_basic, ROUND(math_basic) AS percent_basic, ROUND(math_proficient) AS percent_proficient, ROUND(math_advanced) AS percent_advanced, ROUND(math_proficient + math_advanced) AS percent_proficient_and_advanced FROM mc_school_scores_latlong WHERE category='$schoolGradeLevel' AND lea='$schoolType' AND lea!='n' AND year='2010' AND status_sy09_10!='closed' AND status_sy09_10!='unknown' AND math_below_basic IS NOT NULL AND grade_school_type_sy09_10!='Special Education School' ORDER BY percent_proficient_and_advanced DESC";} 

     if($schoolSubject == 'R'){$query = "SELECT DISTINCT school_name_sy09_10 AS school, ROUND(reading_below_basic) AS percent_below_basic, ROUND(reading_basic) AS percent_basic, ROUND(reading_proficient) AS percent_proficient, ROUND(reading_advanced) AS percent_advanced, ROUND(reading_proficient + reading_advanced) AS percent_proficient_and_advanced FROM mc_school_scores_latlong WHERE category='$schoolGradeLevel' AND lea='$schoolType' AND lea!='n' AND year='2010' AND status_sy09_10!='closed' AND status_sy09_10!='unknown' AND reading_below_basic IS NOT NULL AND grade_school_type_sy09_10!='Special Education School' ORDER BY percent_proficient_and_advanced DESC";} 
      } 
     } 



     if($schoolYear == '2008_2009') { 

      if($schoolType == 'both'){ 
       if($schoolSubject == 'M'){$query = "SELECT DISTINCT school, ROUND(math_below_basic) AS percent_below_basic, ROUND(math_basic) AS percent_basic, ROUND(math_proficient) AS percent_proficient, ROUND(math_advanced) AS percent_advanced, ROUND(math_proficient + math_advanced) AS percent_proficient_and_advanced FROM $myTable2 WHERE category='$schoolGradeLevel' AND lea!='n' ORDER BY percent_proficient_and_advanced DESC";} 

     if($schoolSubject == 'R'){$query = "SELECT DISTINCT school, ROUND(reading_below_basic) AS percent_below_basic, ROUND(reading_basic) AS percent_basic, ROUND(reading_proficient) AS percent_proficient, ROUND(reading_advanced) AS percent_advanced, ROUND(reading_proficient + reading_advanced) AS percent_proficient_and_advanced FROM $myTable2 WHERE category='$schoolGradeLevel' AND lea!='n' ORDER BY percent_proficient_and_advanced DESC";}  
      } 

      else{ 

      if($schoolSubject == 'M'){$query = "SELECT DISTINCT school, ROUND(math_below_basic) AS percent_below_basic, ROUND(math_basic) AS percent_basic, ROUND(math_proficient) AS percent_proficient, ROUND(math_advanced) AS percent_advanced, ROUND(math_proficient + math_advanced) AS percent_proficient_and_advanced FROM $myTable2 WHERE category='$schoolGradeLevel' AND lea='$schoolType' AND lea!='n' ORDER BY percent_proficient_and_advanced DESC";} 

     if($schoolSubject == 'R'){$query = "SELECT DISTINCT school, ROUND(reading_below_basic) AS percent_below_basic, ROUND(reading_basic) AS percent_basic, ROUND(reading_proficient) AS percent_proficient, ROUND(reading_advanced) AS percent_advanced, ROUND(reading_proficient + reading_advanced) AS percent_proficient_and_advanced FROM $myTable2 WHERE category='$schoolGradeLevel' AND lea='$schoolType' AND lea!='n' ORDER BY percent_proficient_and_advanced DESC";} 
      } 
     } 


     if(($schoolYear != '2008_2009') && ($schoolYear != '2009_2010')) { 

     if(($schoolType == 'D') || ($schoolType == 'P')) {$query = "SELECT DISTINCT school, ROUND(percent_below_basic) AS percent_below_basic, ROUND(percent_basic) AS percent_basic, ROUND(percent_proficient) AS percent_proficient, ROUND(percent_advanced) AS percent_advanced, ROUND(percent_proficient + percent_advanced) AS percent_proficient_and_advanced FROM $myTable WHERE subgroup='Total' AND subject='$schoolSubject' AND category='$schoolGradeLevel' AND school_code NOT LIKE 'L%' AND school_code!='STATE' AND school!='BOE CHARTER' AND school!='TUITION GRANTS' AND lea='$schoolType' AND school!='LEA' AND school!='DCPS SCHOOLS' AND school!='PUBLIC CHARTER' ORDER BY percent_proficient_and_advanced DESC";} 

     //if both is chosen as schooltype then it runs query below 
     else {$query = "SELECT DISTINCT school, ROUND(percent_below_basic) AS percent_below_basic, ROUND(percent_basic) AS percent_basic, ROUND(percent_proficient) AS percent_proficient, ROUND(percent_advanced) AS percent_advanced, ROUND(percent_proficient + percent_advanced) AS percent_proficient_and_advanced FROM $myTable WHERE subgroup='Total' AND subject='$schoolSubject' AND category='$schoolGradeLevel' AND school_code NOT LIKE 'L%' AND school_code!='STATE' AND school!='BOE CHARTER' AND school!='TUITION GRANTS' AND school!='LEA' AND school!='DCPS SCHOOLS' AND school!='PUBLIC CHARTER' ORDER BY percent_proficient_and_advanced DESC";} 

     } 



     $mysql = mysql_connect(DATABASE_SERVER12, DATABASE_USERNAME12, DATABASE_PASSWORD12); 
     mysql_select_db(DATABASE_NAME12); 



      $result = mysql_query($query); 

      $ret = array(); 
       while ($row = mysql_fetch_object($result)) { 
        $tmp = new VOscore1(); 
        $tmp->school = $row->school; 
        $tmp->percent_below_basic = $row->percent_below_basic; 
        $tmp->percent_basic = $row->percent_basic; 
        $tmp->percent_proficient = $row->percent_proficient; 
        $tmp->percent_advanced = $row->percent_advanced; 
        $tmp->percent_proficient_and_advanced = $row->percent_proficient_and_advanced; 
        $ret[] = $tmp; 
         } 
       mysql_free_result($result); 

       return $ret; 


    }  



} 
?> 

Любые идеи относительно того, почему он не работает на сервере, но работает локально? Что мне делать?

Спасибо.

-Laxmidi

+1

Мне кажется очевидным, что '$ query' не определяется, поэтому мы знаем, что все ваши условные условия' IF' терпят неудачу.Я предлагаю добавить несколько выражений 'echo', чтобы идентифицировать' $ schoolYear' AND '$ schoolType', когда скрипт работает, потому что они явно не то, что вы ожидаете от них ... – Drew

+0

Hi Andrew Heath, Спасибо за сообщение. Вы были близки. Проблема была в $ schoolPollSelections. – Laxmidi

ответ

0

Хорошо, я понял. Я использовал Alert в сборке релизов для отслеживания переменной Flex, которая устанавливает $ schoolPollSelections. Он показал, что переменная не была установлена ​​моим контроллером RadioButton и списком. Эта переменная была массивом параметров, используемых MyScoreData. И поэтому MyScoreData не смог захватить данные.

Странно, что переменная была показана как имеющая все параметры, когда я проследил ее на локальном хосте. Но он не был установлен, когда он был на удаленном сервере. Я не знаю почему. В любом случае, я получил переменную, правильно установленную на обоих хостах, и она работает.

Благодарим Stoosh, Marc B и Andrew Heath за вашу любезную помощь.

1

Если вы включаете или требующие файлов или переменная запроса приходит из другого файла, убедитесь, что все пути к файлам и библиотекам правильны на сервере, они, вероятно, отличается от пути на вашей местной среды разработки.

Не могли бы вы также выслать код?

+0

Привет, Стойш, Спасибо, что пытался помочь мне. Я опубликовал класс. Это своего рода уродливый шар спагетти, но он работает локально. Если у Вас есть предложения, пожалуйста, дайте мне знать. Я перепровещу пути (снова). – Laxmidi

0

Скорее всего, что происходит в том, что ни один из вариантов вы проверяете как в этом шаре if() заявления матчей, так $query никогда не определяется, и когда код достигает mysql_query() линии, он пытается выполнить запрос NULL, в основном $result = mysql_query('');

Я подозреваю, что если вы изменили фактическую телефонную линию запроса к этому:

$result = mysql_query($query) or die("MySQL error: " . mysql_error()); 

вы увидите сценарий прервать в этой точке с «нулевым запросом» сообщение об ошибке. В настоящее время вызов функции, скорее всего, возвращает FALSE, чтобы указать на возникшую ошибку, а затем вы попытаетесь использовать это значение FALSE в mysql_fetch_assoc(), что приводит к ошибкам ... not a valid MySQL result resource.

Чтобы исправить, поместите запрос по умолчанию перед всеми операциями if(), так что, если ни один из параметров не соответствует, у вас все еще есть какой-то действительный запрос. Или, если вы не хотите, чтобы выполнить запрос в этой точке, вы можете окружить запрос/принести блок в если:

if (!empty($query)) { 
     $result = mysql_query(...) 
     // etc... 
     return($ret); 
} else { 
     return($some_default_value_to_signify_nothing_was_done); 
} 
Смежные вопросы