将通过PHP SImple HTML DOM解析的值存储到mysql数据库中

时间:2014-01-29 17:43:17

标签: php parsing dom

我试图将通过PHP SImple HTML DOM解析的值数组存储到mysql数据库中

我正在使用以下代码

<?php
include_once('simple_html_dom.php');
$con = mysql_connect("localhost","dbname","passphrase");
if (!$con)
{
die(mysql_error());
}
mysql_select_db("dbname", $con);

function scrapper() {

$html = file_get_html('http://www.websiteiwishtoparse.whatever');
foreach($html->find('div.listing-content') as $business) {

$item['name'] = trim($business->find('div.business-name a.url', 0)->plaintext);

$item['street'] = trim($business->find('span.address', 0)->plaintext);

$item['state'] = trim($business->find('span.state', 0)->plaintext);

$item['phone'] = trim($business->find('span.phone', 0)->plaintext);

$ret[] = $item;


}

// clean up memory
$html->clear();
unset($html);

return $ret;
}

$ret = scrapper();

$pdo = new PDO($con); 

foreach($ret as $v) {
echo $v['name'].'<br>';
echo '<ul>';
echo '<li>'.$v['street'].'</li>';
echo '<li>'.$v['state'].'</li>';
echo '<li>'.$v['phone'].'</li>';
echo '</ul>';
$q = $pdo->prepare('INSERT INTO dbname.dbtable (name, street, state, phone) VALUES (:name, :street, :state, :phone)');
$q->execute(array('name' => $name, 'street' => $value, 'state' => $state, 'phone' =>   $phone));

}
mysql_close($con);
?>

结果显示得很好,但我无法将其存储到我的数据库中。

我得到的错误是:在第65行的... / scrapper.php中的非对象上调用成员函数prepare()。 我甚至不确定我是否正确使用PDO。 即使是传统的mysql_query解决方案也可以完成这项工作。 如果有人可以帮助我,我将不胜感激。 Thanx提前

1 个答案:

答案 0 :(得分:3)

你做错了几件事:

$db = new PDO('mysql:host=myhost;dbname=mydb', 'login', 'password'); 

是使用PDO为mysql建立数据库连接的方法。

$name$street$state$phone未在此上下文中定义。您需要使用$v['name']$v['street']$v['state']$v['phone']。 而不是:

$q->execute(array('name' => $name, 'street' => $value, 'state' => $state, 'phone' =>   $phone));

如果你使用bindparam将数组变量分配给查询会更好:http://php.net/manual/en/pdostatement.bindvalue.php