2012-12-18 2 views
-1

J'écris le code suivant dans mon programme PHP, mais mysql ne renvoie aucune ligne. Veuillez vérifier et aider à trouver les erreurs dans le code suivant.mysql ne retourne aucune ligne

MISE À JOUR CODE

<?php 


    //$query2= "SELECT * FROM `email` where `id` ='".$_SESSION['user_id']. "'" ; 

     //$query2= "SELECT * FROM `email` where `id` ='".$_SESSION['user_id']. "'" ; 
     $query= "SELECT * FROM `email` where `id` =' ".$_SESSION['user_id']. "'" ; 

      $query_run2= mysql_query($query); 
      $query_num_rows= mysql_num_rows($query_run2); 

       if ($query_num_rows==0) { 
        echo "Invalid Query"; 

       } 
        else { 

         $query_result = mysql_result ($query_run2, 0, 'name'); 

         echo "Welcome" ; 

         echo $_SESSION['user_id']; 
    } 

?> 

Il me donne le résultat suivant.

Log out Warning: mysql_num_rows() expects parameter 1 to be resource, string given in F:\xampp\htdocs\Email_address\welcome.php on line 20 Invalid Query

Merci, Taha

+0

mysql_query() prend 2 paramètres, le second étant un link_identifier. Plus que probablement, il renvoie FALSE (qui n'est pas une ressource valide) puisque vous ne vous connectez probablement pas à une base de données mysql en utilisant mysql_connect(). Vérifiez la valeur de retour de mysql_query() pour FALSE et regardez mysql_error(). Aussi, assurez-vous de vous connecter avec mysql_connect() quelque part. –

Répondre

2

Vous devez exécuter votre requête et vous ne pouvez pas citer les noms champ/table comme que:

$query2= "SELECT * FROM 'email' where 'id' ='".$_SESSION['user_id']. "'" ; 

devrait être:

$query2= "SELECT * FROM `email` where `id` ='".$_SESSION['user_id']. "'" ; 

Notez que les accents graves ne sont nécessaires que pour les mots réservés dans MySQL et une table et les noms de champs avec des espaces.

Vous ne devriez pas non plus utiliser les fonctions obsolètes mysql_* mais PDO ou mysqli à la place.

+0

J'ai mis à jour mon programme, mais il me donne toujours le même message d'erreur. Attention: mysql_num_rows() s'attend à ce que le paramètre 1 soit resource, booléen donné dans F: \ xampp \ htdocs \ Email_address \ welcome.php à la ligne 20 Invalid Query' –

+1

@Taha Kirmani Vous êtes-vous connecté à votre base de données? – jeroen

1

vous devez exécuter la requête avant de pouvoir saisir les lignes:

$query_run2 = mysql_query($query2); 

vous devez également vous connecter à une base de données avant de pouvoir exécuter une requête:

$con = mysql_connect(DB_SERVERNAME, DB_USERNAME, DB_PASSWORD); 
$dbLink = mysql_select_db(DB_NAME, $con); 

$query_run2 = mysql_query($query2, $dbLink); 

si vous utilisez ces fonctions mysql, par opposition à passer à PDO, ne pas oublier de fermer la connexion de base de données après:

mysql_close($con); 

Si je suggère fortement la mesure du possible, le passage à utiliser PDO à la place, est un peu ici informations utiles si vous décidez d'aller dans cette direction et le configurer sur votre serveur web:

http://net.tutsplus.com/tutorials/php/php-database-access-are-you-doing-it-correctly/

1

vous devez exécuter votre requête:

$query_run2= mysql_query($query2); 
+0

La requête a également un autre problème potentiel: Il y a un espace avant '". $ _ SESSION ['user_id']. "'" ' – beerwin

0

essayer ces:

$query= "SELECT * FROM `email` where `id` =' ".$_SESSION['user_id']. "'" ; 
$rs = mysql_query($query); 
+0

le résultat :(J'ai mis à jour le nouveau code ci-dessus –

+0

Vérifiez d'abord votre connexion à la base de données.Si tout va bien, vérifiez que la valeur de la session est vide ou non. –

Questions connexes