Функция на PDO бьет ошибку

1. Николай (11.10.2012 / 12:03)
Собствена сама проблема использую такой код:
<?
function smiles($string) { 

    $query = DB::$dbh -> query("SELECT * FROM `smiles` WHERE `smiles_cats`=?",array(1)); 
    while($query = $query -> fetch()){
        $string = str_replace($query['smiles_code'], '<img src="/images/smiles/' . $query['smiles_name'] . '" alt="' . $query['smiles_code'] . '" />', $string); }
		if(is_admin()){
    $query = DB::$dbh -> query("SELECT * FROM `smiles` WHERE `smiles_cats`=?",array(1));
    while($query = $query -> fetch()){
        $string = str_replace($query['smiles_code'], '<img src="/images/smiles2/' . $query['smiles_name'] . '" alt="' . $query['smiles_code'] . '" />', $string); }
}
	 
    return $string; 
}
?>
Постоянно бьет такую ошибку
Fatal error: Call to a member function fetch() on a non-object in *func.php on line 264

В чем проблема?

2. Виталий (11.10.2012 / 12:11)
метод query должен возвращать объект PDOStatement. ошибку ищи в нем.

Добавлено через 02:25 сек.
на Rotor похоже

3. Николай (11.10.2012 / 12:16)
2. Виталик Альянс, в пдо классе PDOStatement возращяет обьект.....

4. Александр (11.10.2012 / 12:34)
Во первых очень не красиво использовать переменные с одинаковым именем. Возможно ошибка в этом. Ты на $query сначала пишешь объект а потом в цикле на нее же значения.

5. Николай (11.10.2012 / 12:38)
4. rastoman, неа эффект тот же

6. Николай (11.10.2012 / 13:07)
проблему решил!

URL: https://visavi.net/topics/34807