我有这部分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')";
}
}
我收到错误:
致命错误:在非对象[...]上调用成员函数getAttribute()
但是如果我在插入sql之前放置一个 echo $Medal
命令,它会正确打印,所以我认为getAttribute不是问题所在。
我想是关于此时的查询,我错在哪里?
的Fabio
答案 0 :(得分:0)
在使用$div_medal_man
之前,您需要使用支票$div_medal_man->getAttribute('class')
。因为您需要知道$div_medal_man
确实有getAttribute
函数。
答案 1 :(得分:0)
检查$ div_medal_man。它可能是对象的集合或null。 http://php.net/manual/es/domdocument.getelementsbytagname.php#85182
答案 2 :(得分:0)
你在foreach循环中。所以你只为第一张唱片打印。您可以正确获得$Medal
第一条记录。
但是你的一条记录在getAttribute
对象中没有$div_medal_man
函数。所以你需要检查以下条件。
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';
希望它对您有用:)