Я создал анонимную функцию для получения некоторых результатов 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
Спасибо за вашу драгоценную помощь
Ты никогда не делал global $query
внутри вашего select()
функция. Это означает $query
там есть локальная переменная, и результаты вашей БД будут уничтожены / уничтожены, как только функция вернется.
Плюс, использование глобальных переменных просто ужасно. Специально для этого. Вы ограничиваете себя НЕ ЗАМУЖЕМ запрос в полете в любой момент времени. Почему бы не вернуть реальный результат?
function query($sql) {
$result = $connextion->execute($sql);
return $result;
}
$results = query($sql);
while($row = $results->fetch()) {
...
}
Других решений пока нет …