2010-08-12 3 views
1

J'ai posté cela hier, je n'ai pas eu les réponses qui pourraient résoudre mon problème, mais j'ai eu de très bonnes idées de toute façon. Ce code récupère la ligne associée de la base de données et la traduit en tableau PHP pour que je puisse l'afficher en tant qu'information de profil. Voici mon code actuel:Mysql ressource dans le tableau PHP ne fonctionne pas

Requête:

<?php 

require 'includes/constants.php'; 

class newMysql { 
    private $conn; 

    function __construct() { 
     $conn = mysql_connect(DB_SERVER_USERS, DB_USER_USERS, DB_PASSWORD_USERS, DB_NAME_USERS); 
     if(!$conn) die('There was a problem connecting to the database.'); 
    } 

    function get_profile(mysql_escape_string($lname)) { 
     $query = "SELECT * FROM members WHERE lname = '".$lname."' "; 
     $registerquery = mysql_query($query); 
     if($registerquery){ 
      if (gettype($registerquery) == "resource") { 
       if (mysql_num_rows($result) != 0) { 
        while ($row = mysql_fetch_assoc($registerquery)) { 
        $profile[] = $row; 
        } 
        return $profile; 
       } 
      } 
      if(gettype($registerquery) == "boolean") { 
       return "No array returned"; 
      } 
     } 
     else return "Query not successful".$registerquery; 
    } 
} 

Affichage:

<?php 

require 'classes/newMysql.php'; 

$mysql = new newMysql(); 

$profile = array(); 

$profile = $mysql->get_profile("lozano"); 

echo $profile; 

Tout ce que je fais, je reçois le message: "Requête non réussie". Donc la requête ne retourne rien? Il ne se plaint pas non plus de l'échec de la connexion db. J'ai essayé la requête directement à partir de la CLI, elle a renvoyé la ligne de données attendue.

Toute aide pls ...

+1

Que dit 'mysql_error()'? –

+0

S'il vous plaît expliquer ce que vous essayez de faire ... Les gens ne s'asseoir et lire chaque ligne de votre code. – Shoban

+0

Shoban: Mise à jour. Désolé ... – Joann

Répondre

2

lorsque votre requête n'est pas Successfull utilisation mysql_error de savoir ce qui est arrivé.

http://php.net/manual/en/function.mysql-error.php

Il devrait vous aider à résoudre votre problème rapidement.

Editer: Il semble que vous ne sélectionniez pas de base de données spécifique dans votre code. Vous devriez faire mysql_select_db($dbname, $conn); après votre connexion, et avant l'interrogation.

+0

Vous avez raison. J'ai "Aucune base de données sélectionnée" après l'avoir ajoutée. Bizarre j'ai toujours utilisé cette même classe. Et pour penser que la connexion est établie à partir d'une construction, il ne devrait y avoir aucun changement de comportement entre les fonctions. À moins que je ne manque quelque chose. La connexion fonctionne même maintenant. Je dois le vérifier! – Joann

+0

Il vous manque quelque chose: vous devez faire 'mysql_select_db ($ dbname, $ conn;)' Après votre connexion, et avant l'interrogation. –

0

Est-ce que

function get_profile(mysql_escape_string($lname)) { 

réellement?

je l'aurais prévu une erreur d'analyse ... il certainement des objets sur mon installation 5.2.8 locale

function get_profile($lname) { 
    $lname = mysql_escape_string($lname) 
0

Vous pouvez essayer ceci:

<?php 

require 'includes/constants.php'; 

class newMysql { 
    private $conn; 

    function __construct() { 
     $this->conn = mysql_connect(DB_SERVER_USERS, DB_USER_USERS, DB_PASSWORD_USERS, DB_NAME_USERS); 
     if(!$this->conn) die('There was a problem connecting to the database.'); 
    } 

    function get_profile($lname) { 
     $query = "SELECT * FROM members WHERE lname = '".mysql_escape_string($lname)."' "; 
     $registerquery = mysql_query($query, $this->conn) or die(mysql_error()); 
     if($registerquery){ 
      if (gettype($registerquery) == "resource") { 
       if (mysql_num_rows($result) != 0) { 
        while ($row = mysql_fetch_assoc($registerquery)) { 
        $profile[] = $row; 
        } 
        return $profile; 
       } 
      } 
      if(gettype($registerquery) == "boolean") { 
       return "No array returned"; 
      } 
     } 
     else return "Query not successful".$registerquery; 
    } 
} 

Ne pas utiliser la construction or die que j'ai ajouté en production (mieux vaut consigner ces erreurs et donner un message d'erreur gentil à vos utilisateurs finaux).