PHP SIMPLE DOM PDO выбрать

У меня есть в базе данных список ссылок, из которых я хочу получить некоторые данные.

Весь скрипт работает, кроме той части, когда я беру ссылку с БД и вставляю ее в функцию Simple DOM.
«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 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

Если я поменяю ссылку вручную, она будет работать.

Я думаю, что это связано с тем, как я извлекаю ссылку из БД и вставляю в нее функцию.

Спасибо

-2

Решение

Проблема с fetchALL в foreach.
Линия изменилась:

foreach ($ sth-> fetchAll () как $ 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;
}

Спасибо за советы.

0

Другие решения

Когда я использую PDO, я использую подготовленные операторы, поэтому синтаксис получения результата запроса немного отличается … но я думаю, что вам нужно извлечь строку из вашего $ sth, поскольку это будет набор записей. Вот фрагмент того, что я делаю

    $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);

}
-1

По вопросам рекламы [email protected]