Hallo wmcity,
Ik zit met een probleempje, ik heb een db class in PDO:



 class Connection
 {
 	
    private $Conn;

    public function __construct()
    {
        
        try
          {
             $this->Conn = new PDO("");        
        }
        catch(PDOException $Error)
        {
            if(!$this->Conn)
            {
                die("Fout bij het connecten naar onze database: ".$Error->GetMessage());
            }    
          }
        
    }
    
    public function db()
    {
        return $this->Conn;
    }
    
    public function __destruct()
       {
        $this->Conn = null;
      }
    
}

En ik haal het er zo uit:


  $Conn = new Connection();


En dan probeer ik dit in het script en dan geeft ie een Notice (op me usbwebserver):

Notice: Undefined property: PDO::$RowCount in F:\USBWebServer\UsbWebserver\Root\Immoweb\index.php on line 21



  $sRand = $Conn->db("SELECT * FROM huis ORDER BY RAND() LIMIT 3");
  
    if(!$sRand)
     {
     	echo $sRand->GetMessage();
     }
    else
    {
    	
   if($sRand->RowCount < 3)
   {
   	 echo "Er zijn minder dan 3 advertenties op de website, zo kan er moeilijk een random wordeen genomen.";
   }
   else
   {
   


Is de code, ik heb al vaker PDO geprobeerd maar daar liep ik ook vast op dit probleem.

Kan iemand zeggen wat ik fout doe?
Ik dit al geprobeerd:
rowCount() RowCount() rowCount en nu RowCount.

Maar niets werkt..
Jouw functie db() geeft alleen maar een instantie van PDO terug, en voert niet een query uit zoals jij verwacht. Als gevolg daarvan is $sRand een instantie van PDO, terwijl jij verwacht dat het een instantie van PDOStatement is. Vandaar dat rowCount() (het is een method) niet bestaat.

Ander probleem is dat rowCount() normaal niet werkt bij een SELECT-query.
php.net handleiding
For most databases, PDOStatement::rowCount() does not return the number of rows affected by a SELECT statement. Instead, use PDO::query() to issue a SELECT COUNT(*) statement with the same predicates as your intended SELECT statement, then use PDOStatement::fetchColumn() to retrieve the number of rows that will be returned. Your application can then perform the correct action.

Een andere oplossing is [php]count[/php]() aanroepen op de array die PDOStatement::fetchAll() teruggeeft.
@Jelmer,
Hoe kan ik mijn ding aanpassen dat wel elke functie het erop doet.
Het is toch best belangrijk dat ik gewoon fetch() kan gebruiken enzo.
Want rowCount() in mijn andere class doet het wel.

Kun jij mijn clas zo aanpassen dat ik wel alle soorten query's kan doen (het gebruik van query() is het belangrijkste).

Ben nog niet zolang bezig in pdo.

Reageren