2013-04-22 5 views
-3

Я строй засекреченного сайта, но каждая категория имеет свои собственные поля, в месте надстройки странице, когда я генерация поля ошибки появиласьNull Результата в функции

NULL 
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /Applications/MAMP/htdocs/test.com/inc/db.inc.php on line 36 

это функция я использовал

function getCategoryFieldsById($cid) 
{ 
    $sql = "select * from fields where categoryID = $cid order by fi_order"; 
    $result = $this->query($sql); 
    $no  = $this->getNumRows($result); 

    if($no) 
    { return $result; } 
    else 
    { 
     $pid = $this->getParentId($cid); 
     if($pid) 
      $this->getCategoryFieldsById($pid); 
     else 
      return 0; 
    } 
} 

проблема возврата NULL от имени строк БД, я могу напечатать $ нет, и видеть, что есть 14 строк, но когда идут внутри, если(), он не может увидеть номер

select * from fields where categoryID = 35 order by fi_order 
0 
select * from fields where categoryID = 34 order by fi_order 
0 
select * from fields where categoryID = 1 order by fi_order 
14 
NULL 
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /Applications/MAMP/htdocs/izomart.com/inc/db.inc.php on line 36 

это мои функции MySQL

function query($query) { 
    $this->theQuery = $query; 
    $result=mysql_query($query) or print(mysql_error()); 
    return $result; 
} 

function getNumRows($result){ 
    return mysql_num_rows($result); 
} 
+1

Вы даже не показываете нам, где вы используете функции 'mysql_'. – deceze

+0

Где моя инструкция 'mysql_fetch_array'? – Amir

+0

Извините, что я забыл добавить их, я добавил их сейчас, пожалуйста, проверьте –

ответ

1

При вызове функции рекурсивно, которая должна в конце концов возвращает значение, когда вы делаете рекурсивный вызов вам необходимо вернуть это значение и проход вверх цепь ,

В принципе, все, что вам нужно сделать, это изменить линию

$this->getCategoryFieldsById($pid); 

в

return $this->getCategoryFieldsById($pid); 

Это позволит убедиться, что при обнаружении значения, и возвращается к этому вызову, возвращает этот вызов значение в исходное место, из которого был вызван метод.

+0

Первое значение - 35, когда нет строк, получить родительский идентификатор и проверить поля ,,, большой родительский идентификатор равен 1, поэтому '$ no = 14' ,,, но if() sttatment не может проверить это и вернуть результат $ –

+0

. Как и в случае редактирования ответа, я считаю, что это связано с просьбой когда category_id = null, что является недопустимым синтаксисом, вам нужно спросить, когда 'category_id is null ' – duellsy

+0

Ahh, не заметил, что вы вызываете функцию рекурсивно .. Я отредактирую свой ответ – duellsy

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