2016-10-20 5 views
-2

私はデータベースに、データを取りたいリンクのリストを持っています。PHP SIMPLE DOM PDO select

DBからのリンクを取得してSimple DOM機能に貼り付けるときの部分を除いて、すべてのスクリプトが機能しています。 " は( 'utile /をdb.php')が含ま; のinclude_once( 'utile/simple_html_dom.php');

$dbh = new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8;", $username, $password); 
$sth = $dbh->query("SELECT link FROM pilots where year = '2007' and Contry ='CZ' and zboruri <> '101' limit 3 "); 

foreach ($sth as $url) { 
    functie ($url['link']); 
} 

function functie($lin){ 
    $linkul=file_get_html("$lin"); 

// pages number 
    $paging = $linkul->find('div[class*=paging]',0); 
    echo $paging; 
    $numar=-4; 
    foreach($paging->find('a') as $element=>$item){$numar++;} 
    echo $numar; 
} 

" は、私は次のエラーが表示されます

Fatal error: Call to a member function find() on null in C:\xampp\htdocs\para\teste.php on line 269 

I場合リンクを手動で変更してください。

DBからリンクを抜き出して関数を挿入する方法に関連すると思います。

はありがとう

+0

多分、データベースに余分な文字があります。 'var_dump($ lin)'を使ってその内容を確認してください。文字列の長さが期待どおりであることを確認してください。そこにスペースや改行があるかもしれません。 – Barmar

+1

関数の中に 'include_once'呼び出しを入れてはいけません。これらの関数は、関数に対してローカルではなく、グローバルに定義する必要があります。 – Barmar

+0

ありがとう@Barmar。しかし、私はまだ同じエラーが表示されます。 – Tudor

答えて

-1

私はプリペアドステートメントを使用し、そのクエリの結果を得る上の構文は少し異なっている...しかし、私はあなたの$ STHから行をフェッチする必要があると思いPDOを使用する場合それはレコードセットになるからです。ここでは、私が行うことのスニッピです。

$dbconn = new PDO('mysql:host='.$hostname.';port='.$dbPort.';dbname='.$dbName.';charset=utf8', $dbuser, $dbpass,array(PDO::MYSQL_ATTR_FOUND_ROWS => true)); 
    $dbconn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $result=$dbconn->prepare($query); 
    $result->execute($arr); 
    if(!$result){ 
     // do your error handling, result is either false 
     // for error or contains a recordset 

     $errorMessage=$dbconn->errorInfo(); 

    } 

    $result->setFetchMode(PDO::FETCH_ASSOC); 
    while($row=$result->fetch()){ 

    // do stuff here, $row is an associative array w/ the 
    //keys being the column titles in your db table 

     print_r($row); 

    } 
+0

ありがとう@ivanivan。しかし、 – Tudor

+0

私はまだ同じエラーが表示されます。 – Tudor

+0

基本的に、データベースに保存された単純なDOMスクリプトを実行するために必要なURLリストがあります。 – Tudor

0

foreachのfetchALLの問題です。 行が変更されました:

foreach($sth->fetchAll() as $url){

取り組んでいる最終的なコード:

include ('utile/db.php'); 
include_once('utile/simple_html_dom.php'); 

$dbh = new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8;", $username, $password); 
$sth = $dbh->query("SELECT link FROM pilots where zboruri > '101' limit 3"); 

foreach($sth->fetchAll() as $url){ 
    functie ($url['link']); 
} 

function functie($lin){ 
    var_dump($lin); 
    $linkul=file_get_html("$lin"); 

    $paging = $linkul->find('div[class*=paging]',0);// pages number 
    echo $paging; 
    $numar=-4; 
    foreach($paging->find('a') as $element=>$item){$numar++;} 
    echo $numar; 
} 

をアドバイスいただきありがとうございます。