Pagina 1 din 1

Eroare Call to a member function fetch() on a non-object

Scris: Mie Aug 07, 2013
de hi_ella
Salut!
Nu inteleg unde gresesc in urmatoarea functie.

Cod: Selectaţi tot

public function selectSql($table,$where='',$fields='*',$limit='')
      {
          $str="SELECT ".$fields." FROM ".$table;
          if($where!='')
          {             
           $str.=" WHERE ".$where;
           }
           if ($limit!='')
           {
            $str.=" LIMIT ".$limit;
           }
           return $this->stms=$this->conn->query($str);
             }
 
O apelez astfel:

Cod: Selectaţi tot

$whereclause="user=".$_POST['user'];
 $rez=$pdoobj->selectSql("utilizatori",$whereclause,"count(*) as num");
$rez->setFetchMode(PDO::FETCH_ASSOC);
$rezs=$rez->fetch();
   if(empty($rezs))
  {//continua cu instruciunile
} 
Imi da eroarea :

Cod: Selectaţi tot

Fatal error: Call to a member function fetch() on a non-object in C:\wamp\www\PDOwork.class.php on line 58.
Linia 58 este:

Cod: Selectaţi tot

return $this->stms->fetch(PDO::FETCH_ASSOC);
Ar trebui sa utilizez prepared statements? De obicei le utilizez doar la inserari.

Multumesc anticipat !

Eroare Call to a member function fetch() on a non-object

Scris: Mie Aug 07, 2013
de MarPlo
Eroarea spune ca functia fetch() e aplicata la un element care nu e tip obiect.
Poti sa verifici ce contine acel element, cu acest cod:

Cod: Selectaţi tot

var_dump($this->stms);
Daca e false, posibil ceva gresit la interogarea SQL.
Valorile de tip sir la WHERE trebui sa fie intre ghilimele. Incearca sa inlocuiesti in scriptul tau cu acest cod:

Cod: Selectaţi tot

$whereclause = "user='". $_POST['user'] ."'";
 

Eroare Call to a member function fetch() on a non-object

Scris: Mie Aug 07, 2013
de hi_ella
Am reusit ! Merci mult !
Am modificat cum ai spus variabila $whereclause:

Cod: Selectaţi tot

$whereclause="user='".$_POST['user']."'";
$rez=$pdoobj->selectSql("utilizatori",$whereclause,"count(*) as num");
$rezs=$rez->fetch(PDO::FETCH_ASSOC); 
Apoi am verificat asa, fiindca imi spunea ca e string .Nu stiu sigur cat de ortodoxa e metoda dar imi da rezultatul corect .

Cod: Selectaţi tot

 if ((int)$rezs['num']===0)
{//
}