Bonjour.
J'exécute une requête SELECT sur une base oracle depuis PHP.
Comment fait-on pour savoir si le résultat est vide?
J'ai bien essayé la fonction oci_num_rows mais elle ne fonctionne pas avec une requête SELECT.
Merci.
Version imprimable
Bonjour.
J'exécute une requête SELECT sur une base oracle depuis PHP.
Comment fait-on pour savoir si le résultat est vide?
J'ai bien essayé la fonction oci_num_rows mais elle ne fonctionne pas avec une requête SELECT.
Merci.
Si la tableau retourné par ton Query est supérieur à 0, alors la requête n'est pas vide .
Bonjour et merci pour ta réponse.
Tu pourrais m'écrire le code pour être plus explicite? :D
Bonsoir,
:fleche: oci_num_rows
A+.
:mouarf:
Peut-on voir ton code qui ne fonctionne pas avec oci_num_rows?
A+.
Voici le code qui ne marche pas (ça indique que le login n'est pas dans la base alors qu'il y est)
et voici ce qu'on peut lire dans la documentation:Code:
1
2
3
4
5 $cursor=oci_parse($connexion,"SELECT * FROM RELUTILISATEURS WHERE UTILISATEUR_LOGIN='".$login."'"); oci_execute($cursor); if(oci_num_rows($cursor)>0) echo "déjà dans la base"; else echo "pas dans la base"; oci_free_statement($cursor);
Sinon, j'ai une autre méthode:Citation:
Note:
Cette fonction ne retourne pas le nombre de lignes sélectionnées. Pour les commandes de type SELECT, cette fonction va retourner le nombre de ligne qui ont été lues dans le buffer avec oci_fetch*().
Mais c'est peut-être inefficace?Code:
1
2
3
4
5 $cursor=oci_parse($connexion,"SELECT COUNT(*) AS NBRESULTATS FROM RELUTILISATEURS WHERE UTILISATEUR_LOGIN='".$login."'"); oci_execute($cursor); if (oci_fetch_object($cursor)->NBRESULTATS>0) $messageerreurs.="Le login existe déjà. Choisissez-en un autre.<br>"; oci_free_statement($cursor);
Première chose :
Pourquoi utiliser le * , alors que visiblement du ne retourne qu'un seul éléments.
D'après la doc ton code devrais être ceci
Code:
1
2
3
4
5
6
7 $cursor=oci_parse($connexion,"SELECT UTILISATEUR_LOGIN FROM RELUTILISATEURS WHERE UTILISATEUR_LOGIN='".$login."'"); oci_execute($cursor); $result = oci_fetch_object($cursor); if (oci_num_rows($result)>0) $messageerreurs.="Le login existe déjà. Choisissez-en un autre.<br>"; oci_free_statement($cursor);
Bonjour.
J'ai bien tapé ton code mais ça ne marche pas: il ne reconnaît pas un login qui est déjà dans la base.:(
Bon recommençon depuis le début.
Cela donne quoi ?Code:
1
2
3
4 $sql = "SELECT UTILISATEUR_LOGIN FROM RELUTILISATEURS WHERE UTILISATEUR_LOGIN='".$login."'" echo $sql ;
tu peu faire une requeteet tu récupères la valeur dans variable et tu fait une condition siCode:select count(*) from ...
Code:if(!empty(variable){...}else {...}