2016-10-20 6 views
-2

데이터를 가져 가고 싶은 링크 목록이 데이터베이스에 있습니다.PHP SIMPLE DOM PDO select

DB에서 링크를 가져 와서 간단한 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 

을 링크를 수동으로 변경하면 작동합니다.

DB에서 링크를 추출하고 함수를 삽입하는 방법과 관련이 있다고 생각합니다.

감사합니다

+0

어쩌면 데이터베이스에 몇 가지 추가 문자가있을 수 있습니다. 'var_dump ($ lin)'을 사용하여 그 내용을 확인하십시오. 문자열 길이가 예상 한 것과 일치하는지 확인하십시오. 거기에 공백이나 줄 바꿈이있을 수 있습니다. – Barmar

+1

함수 안에'include_once' 호출을 넣으면 안됩니다. 이 함수는 함수에 국한되지 않고 전역 적으로 정의되어야합니다. – Barmar

+0

감사합니다 @ 바르 마. 하지만, 나는 여전히 같은 오류가 발생합니다. – 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; 
} 

는 조언 주셔서 감사합니다.