2016-02-02 100 views
1

我有这个代码的PHP部分:上查询命令的致命错误

$indice_man = $html->find('div.man', 0); 


      foreach($indice_man->find('div.block_results') as $e_trial_man) { 

       foreach($e_trial_man->find('tr.line_results') as $result_man) { 

         $div_medal_man = $result_man->getElementByTagName('div'); 
         $medal_man = explode(' ',$div_medal_man->getAttribute('class')); 

         $Trial = trim($e_trial_man->childNodes(0)->plaintext); 
         $Medal = $medal_man[1]; 
         $Sex = male; 
         $Name = trim($result_man->find('td.name',0)->plaintext); 
         $Country = trim($result_man->find('td.country',0)->plaintext); 

        $sql = "INSERT INTO OlympicMedal (Olimpiade, Sport, Disciplina, Medaglia, Categoria, Atleta, Nazione) VALUES ('$Game', '$Sport', '$Trial','$Medal', '$Sex', '$Name','$Country')"; 

        } 

       } 

我得到的错误:

Fatal error: Call to a member function getAttribute() on a non object [...]

,但如果我插入SQL前加上echo $Medal命令,它正确打印所以我不认为getAttribute是问题。 我认为这是关于查询,我错在哪里?

法比奥

+0

打印$ medal_man值工作,并检查或检查查询一次 – RaMeSh

+0

检查'$ div_medal_man',它是否有'getAttribute'功能或不 – Nehal

回答

0

您需要使用$div_medal_man->getAttribute('class')前检查$div_medal_man。因为你需要知道的是$div_medal_man真的有getAttribute功能。

0

您处于foreach循环。所以你只打印第一张唱片。正确记录第一条记录,即可得到$Medal

但是您的一个记录中没有getAttribute函数$div_medal_man对象。所以你需要检查下面的条件。

使用method_exists

if(method_exists($div_medal_man, 'getAttribute')){ 
    $medal_man = explode(' ',$div_medal_man->getAttribute('class'));    
}else{ 
    $medal_man = ''; 
} 

$Medal = isset($medal_man) ? $medal_man[1] : 'no_value'; 

希望它会为你:)