вернуть результат pdo из анонимной функции outisde внутри класса

Я создал анонимную функцию для получения некоторых результатов sql, поэтому мне не нужно писать ее каждый раз:

function select($sql){
global $connexion; // config connection
$query = $connexion->prepare($sql);
$query->execute();
return $query->setFetchMode(PDO::FETCH_OBJ);
}

Я создал класс для получения метаданных из моей БД:

class PageInfo {
public function get_meta($page_name){
$sql = "SELECT description, keywords FROM pages WHERE titre='$page_name'";
select($sql); //call the first function
global $query;
while( $results = $query->fetch() ){
echo "test";
}
}
}

Тогда я называю класс так:

$PageInfo = new PageInfo();
$PageInfo->get_meta('homepage');

Не понимаю, почему я получаю эту фатальную ошибку:

Fatal error: Call to a member function fetch() on a non-object

Спасибо за вашу драгоценную помощь

0

Решение

Ты никогда не делал global $query внутри вашего select() функция. Это означает $query там есть локальная переменная, и результаты вашей БД будут уничтожены / уничтожены, как только функция вернется.

Плюс, использование глобальных переменных просто ужасно. Специально для этого. Вы ограничиваете себя НЕ ЗАМУЖЕМ запрос в полете в любой момент времени. Почему бы не вернуть реальный результат?

function query($sql) {
$result = $connextion->execute($sql);
return $result;
}

$results = query($sql);
while($row = $results->fetch()) {
...
}
2

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

Других решений пока нет …

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