2014-01-29 51 views
0

我試圖通過PHP簡單的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); 
?> 

結果顯示很好,但我無法將它存儲到我的分貝。

我得到的錯誤是:調用一個成員函數prepare()在一個非對象的行65上的/ scrapper.php。 我甚至不確定我是否正確使用PDO 。 即使是傳統的mysql_query解決方案也能完成這項工作。 如果有人能幫助我,我將不勝感激。 Thanx提前

+0

你嘗試,並檢查是否要連接到數據庫是否正確?類似於: if($ pdo){ echo'connected'; } –

+0

是的,建立與數據庫的連接 – user926652

回答

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

+0

你可以給我一個如何存儲值的代碼的例子..你絕對正確這是一個數組值,所以我應該使用$ v ['name']等等,但我有點困惑如何做到這一點。即使沒有PDO,但與mysql_query ... TY – user926652

+0

感謝您的意見,我能夠用傳統的mysql_query方法... $ sql =「INSERT INTO db.dbname(names)VALUES('{$ v ['名稱']}')」; – user926652