2012-10-30 1 views
4

Я только начинаю с PDO и просматриваю несколько руководств для ответа, но я просто не могу заставить его работать.undefined fetchAll и выборка в возвращаемом PDOStatement

Я получил

Notice: Undefined property: PDOStatement::$fetch in E:\-------- on line 22 
Result: 1 

с

$dsn = "mysql:host=localhost;dbname=the_database;"; 
try { 
    $dbh = new PDO($dsn, "root", ""); 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} catch (PDOException $e){ 
    die("failed conexion: ".$e->getMessage()); 
} 


$query = "SELECT MAX(price) AS max, MIN(price) AS min FROM cellphones"; 
try { 
    $sth = $dbh->prepare($query); 
    $sth->execute(); 
    $sth->setFetchMode(PDO::FETCH_ASSOC); 
    $result = $sth->fetchAll; 
    } 
catch(PDOException $e){ 
    echo $e->getMessage(); 
    } 
die("<br />Result: ".print_r($result, true)); 

я получаю тот же результат с

$sth = $dbh->query($query); 
$result = $sth->fetchAll; 

и

$sth = $dbh->prepare($query); 
$sth->execute(); 
$result = $sth->fetch; 

Что я могу сделать, так это то, что он может возвращать количество результатов Но почему? И почему это дает мне Уведомление о fetch/fetchAll даже не объявлено. Я тоже не получаю никаких исключений.

+1

Кроме того, несвязанный, это неправильное использование 'print_r'. Если вы конкатенируете, используйте его так: 'print_r ($ result, true)' –

+0

спасибо! теперь исправлено – Sdlion

ответ

8

Вы должны использовать вызов метода с paranthesis:

$sth->fetchAll(); 

Или $ sth-> выборки();

не только

$sth->fetchAll; 

PHP думает, что вы пытаетесь ударить свойство fetchAll!

+0

Вау, спасибо! Я чувствую себя немного смущенным, но хорошо – Sdlion

+0

@Sdlion np ... Это всегда очевидные, которые трудно найти! – Ray

Смежные вопросы