2009-07-21 10 views
0

j'ai écrit la classe d'interface db suivante:php classe interface db personnalisée - aucune base de données sélectionnée

<?php 

// dbinterface.php 

class db { 
    private $con; 
    private $host; 
    private $user; 
    private $pass; 
    private $database; 
    private $error; 

    function db($host, $user, $pass, $database) { 
     $this->con = mysql_connect($host, $user, $pass); 
     mysql_select_db($database); 
    } 

    function escape($text) { 
     return mysql_real_escape_string($text); 
    } 

    function run($query) { 
     $q = mysql_query($query); 
     if ($q === false) { 
      $this->error = "Error " . mysql_errno() . ": " . mysql_error($this->con); 
      return false; 
     } elseif ($q === true) { 
      return true; 
     } else { 
      $result = array(); 
      while ($row = mysql_fetch_assoc($q)) { 
       array_push($result, $row); 
      } 
      return $result; 
     } 
    } 

    function get_error() { 
     return $this->error; 
    } 

    function cose() { 
     mysql_close($this->con); 
    } 
} 


?> 

Le problème est que, pour une raison quelconque, lorsque je tente d'exécuter une requête avec elle, je reçois l'erreur : Aucune base de données sélectionnée. Mais mon code le sélectionne dans le constructeur. J'ai vérifié et vérifié que je passais le bon nom de DB. et j'ai fait en sorte qu'il soit effectivement passé.

Répondre

1

Vous devez toujours vérifier les valeurs de retour des fonctions intégrées. Essayez quelque chose comme ceci et vous pourriez obtenir une réponse:

function db($host, $user, $pass, $database) { 
    if (($this->con = mysql_connect($host, $user, $pass)) === false) { 
     throw new Exception(mysql_error()); 
    } 
    if (!mysql_select_db($database)) { 
     throw new Exception(mysql_error()); 
    } 
} 
0

Cette classe fonctionne bien pour moi ... vous devriez certainement faire plus de vérification des erreurs si. Vous pouvez obtenir l'erreur "Aucune base de données sélectionnée" si vous spécifiez une base de données qui n'existe pas, c'est donc là que je regarderais ensuite.

EDIT: Testez la valeur de retour de mysql_select_db() et déclenchez une erreur ou lancez une exception si elle ne renvoie pas true.

+0

oui j'ai juste essayé ceci et il ne jette aucune erreur. –

Questions connexes