php - 使用 PHP mySQL simpleHTMLDOM 插入数据时调用非对象上的成员函数 find()

标签 php mysql simple-html-dom

我有一个脚本,可以解析网页中的某些元素并将它们存储在 mysql 数据库中。一切正常,直到我尝试拆分元素并将结果数据存储到数据库中。有什么想法可能是错的吗? 这是我正在解析的页面:http://www.ratemyprofessors.com/SelectTeacher.jsp?sid=953

这是我的代码:

<?php
include('simple_html_dom.php'); 

//connect to db (code emitted)

prof_List("http://www.ratemyprofessors.com/SelectTeacher.jsp?sid=953");

function prof_name($url)
{
    // collect data
    echo $url;
    $data = new simple_html_dom();  
    $data->load_file($url);
    $profName = $data->find("//*[@id=profName]", 0);
    $profName = strip_tags($profName);
    echo "Full Name: " . $profName = trim($profName);
    list($first, $last) = explode("&nbsp;", $profName);
    echo "fname: " .  $first;
    echo "lname: " . $last;

    //call mysql function
    insert_row($profName, $first, $last);

}


function insert_row($profName, $first, $last)
{
    $sql1="INSERT INTO PROFESSOR(name, firstname, lastname) VALUES('$profName','$first', '$last')";
    $sql1=strip_tags($sql1);
    echo $sql1;
    mysql_query($sql1) or die(mysql_error());  
    echo "Data Inserted!"; 
}


function prof_List($mainURL)
{

    $list = new simple_html_dom();  
    $list->load_file($mainURL);
    $profLinks = $list->find("//*[@class=profName]/a");
    foreach($profLinks as $profLink)
    {
        $profU=$profLink->href;
        echo $profURL = "http://www.ratemyprofessors.com/" . $profU;
        prof_name($profURL);
    }

}

?>

这是我的输出:

Connected to MySQL
Connected to Databasehttp://www.ratemyprofessors.com/SelectTeacher.jsp?the_dept=All&sid=953&orderby=TLName&toggel=truehttp://www.ratemyprofessors.com/SelectTeacher.jsp?the_dept=All&sid=953&orderby=TLName&toggel=trueFull Name: fname: lname: INSERT INTO PROFESSOR1(name, firstname, lastname) VALUES('','', '')Data Inserted!http://www.ratemyprofessors.com/ShowRatings.jsp?tid=861228http://www.ratemyprofessors.com/ShowRatings.jsp?tid=861228
Fatal error: Call to a member function find() on a non-object in /Users/user1/Sites/simple_html_dom.php on line 879

最佳答案

我认为您不能在 simple_html_dom() 上使用 find()

试试这个:

$data = new simple_html_dom();  
$data->file_get_html($url);
$profName = $data->find("//*[@id=profName]", 0);

This link提供了一个很棒的基本示例。

关于php - 使用 PHP mySQL simpleHTMLDOM 插入数据时调用非对象上的成员函数 find(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12335394/

相关文章:

java - 池中所有已使用的连接都处于 hibernate 状态并创建新连接

php - 文件获取内容(): stream does not support seeking / When was PHP behavior about this changed?

PHP-MySQL 使用 Simple HTML Dom 库将 "Array"插入到 foreach 循环中的表中

php - 使用 Simple HTML Dom 检索关键字元标记内容?

php - 适当的开发。覆盖 Twig 模板的方法

javascript - 如何验证基于选项卡的列表表单并使用 php ajax 保存?

php - sql 查询对一个查询中多个定义的列进行计数

php - Mongo 查询数组,当数组键未知时?

mysql - 如何检查另一行是否存在值?

mysql - 如何拆分逗号分隔值