Class de connection MySql

Class de connection MySql - PHP - Programmation

Marsh Posté le 15-01-2003 à 12:51:20    

Je viens de creer une class Connection qui me permet d'acceder facilement a la bdd, le premier Read() fonctionne correctement mais j'obtient une erreur pour le deuxieme Read():
 
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in connection.php on line 45
 
index.php

Code :
  1. $conn = new CConnection;
  2. $dr = $conn->Select($sql);
  3. while ($row = $dr->Read())
  4. {
  5. }
  6. $dr->Close();
  7. $conn->Close();


 
connection.php
 

Code :
  1. class CConnection
  2. {
  3. function CConnection()
  4. {
  5.  $base =  "base";
  6.  $bdd =   "bdd";
  7.  $login =  "login";
  8.  $pwd =   "pwd";
  9.  mysql_connect($bdd, $login, $pwd) or die("Erreur de connexion au serveur" );
  10.  mysql_select_db($base) or die("Erreur de connexion a la base de donnees" );
  11. }
  12. function Select($sql)
  13. {
  14.  return new CSqlReader ( mysql_query( $sql ) );
  15. }
  16. function Close()
  17. {
  18.  mysql_close();
  19. }
  20. }
  21. class CSqlReader
  22. {
  23. var $rows;
  24. var $cols;
  25. function CSqlReader( $result )
  26. {
  27.  $this->$rows = $result;
  28. }
  29. function Read()
  30. {
  31.  return $this->$cols = mysql_fetch_array( $this->$rows, MYSQL_ASSOC );
  32. }
  33. function Close()
  34. {
  35.  mysql_free_result( $this->$rows );
  36. }
  37. }

Reply

Marsh Posté le 15-01-2003 à 12:51:20   

Reply

Marsh Posté le 15-01-2003 à 13:01:34    

l'accès aux propriétés d'un objet se fait par  
$this->row et non par $this->$row.
sinon ça veut dire que tu accèdes à la propriété de la valeur de row.
ex:
$row= 'test';
echo $this->$row; ==>> correspond à echo $this->test;
 
comme ton $row n'est pas défini, il fonctionne la première fois par hasard, et la seconde il se plante.

Reply

Marsh Posté le 16-01-2003 à 17:04:43    

Une bonne classe de connexion c'est celle que l'on trouve sur le site de eskuel (voir PHPScripts pour le lien).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed