我试图将通过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提前
答案 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