[php - sql] Qu'est-ce qu'une "resource" ?
Résolu/Fermé
Une pattate qui vole
Messages postés
35
Date d'inscription
mardi 22 mai 2012
Statut
Membre
Dernière intervention
13 juin 2012
-
Modifié par Une pattate qui vole le 25/05/2012 à 10:49
Une pattate qui vole Messages postés 35 Date d'inscription mardi 22 mai 2012 Statut Membre Dernière intervention 13 juin 2012 - 25 mai 2012 à 14:17
Une pattate qui vole Messages postés 35 Date d'inscription mardi 22 mai 2012 Statut Membre Dernière intervention 13 juin 2012 - 25 mai 2012 à 14:17
A voir également:
- [php - sql] Qu'est-ce qu'une "resource" ?
- Easy php - Télécharger - Divers Web & Internet
- Retour a la ligne php ✓ - Forum PHP
- You don't have permission to access this resource ✓ - Forum Réseaux sociaux
- Logiciel sql - Télécharger - Bases de données
- Requête sql pix - Forum Python
3 réponses
Utilisateur anonyme
25 mai 2012 à 11:35
25 mai 2012 à 11:35
Bonjour
Attention, mysql_fetch_array et mysql_fetch_assoc ne définissent aucune resource.
C'est fonction en prennent une en paramètre, mais n'en définissent pas.
C'est mysql_query qui crée une resource (quand il n'y a pas de problème)
Je ne comprend pas ton "plus concrètement". Tu demandes :
pourquoi "mysql_num_rows" considère (bout de code) comme une resource et pas (autre bout de code)
Mais les bouts de code ne sont pas de resources.
Une resource, disons que c'est un objet un peu spécial dont la structure est cachée au programmeur. Il est créé par certaines fonctions pour être utilisé par d'autres.
Attention, mysql_fetch_array et mysql_fetch_assoc ne définissent aucune resource.
C'est fonction en prennent une en paramètre, mais n'en définissent pas.
C'est mysql_query qui crée une resource (quand il n'y a pas de problème)
Je ne comprend pas ton "plus concrètement". Tu demandes :
pourquoi "mysql_num_rows" considère (bout de code) comme une resource et pas (autre bout de code)
Mais les bouts de code ne sont pas de resources.
Une resource, disons que c'est un objet un peu spécial dont la structure est cachée au programmeur. Il est créé par certaines fonctions pour être utilisé par d'autres.
Utilisateur anonyme
25 mai 2012 à 12:11
25 mai 2012 à 12:11
Si une variable est un resource qui vient d'un mysql_query ('SELECT..) alors mysql_fetch_..._ ET mysql_num_rows l'accepteront forcément tous les deux comme paramètre.
As-tu un exemple où tu vois une différence ? Dans celui que tu donnes au départ, il n'y a aucun mysql_num_rows.
As-tu un exemple où tu vois une différence ? Dans celui que tu donnes au départ, il n'y a aucun mysql_num_rows.
Une pattate qui vole
Messages postés
35
Date d'inscription
mardi 22 mai 2012
Statut
Membre
Dernière intervention
13 juin 2012
25 mai 2012 à 13:32
25 mai 2012 à 13:32
mysql_num_rows n'apparait pas car il était dans une autre partie de mon programme. afin que mon programme fonctionne comme je le désirais, je l'ai un peu modifier. Je n'ai donc plus de problème, mais pour ma culture, j'aimerais quand même avoir le réponse à ma question.
Mon code d'origine était, à peu de chose près :
Sans le mysql_num_rows, le programme s'exécutait correctement, excepté dans le cas où mon $req était vide car il n'y avait pas d'élément avec les critère de ma close where.
Dès que je mettais le mysql_num_rows, il plantait en me disant «paramater 1 expected to be resource in mysql_num_rows».
Mon code d'origine était, à peu de chose près :
$info=$_POST['IdTypeMandat']; if($info == "") //30 { include('index.php'); exit(); } $sql1="SELECT IDAdherant FROM listemandat WHERE listemandat.IdTypeMandat = '$info'"; $sql2="SELECT NomMandat FROM nommandat WHERE IdTypeMandat = '$info'"; $chaine=""; $idreq=mysql_query($sql1); $id=mysql_fetch_array($idreq); $nommandat=mysql_fetch_assoc(mysql_query($sql2)); //40 $n=0; do { if($n == 0) { $chaine.="IDAdherant = ".$id['IDAdherant']; $n=1; }else{ $chaine.=" OR IDAdherant = ".$id['IDAdherant']; } //50 }while($id=mysql_fetch_array($idreq)); $sql="SELECT * FROM adherant WHERE ".$chaine; $req=mysql_query($sql); if(mysql_num_rows($req) > 0) { $element=mysql_fetch_array($req); do { . . . }while($element=mysql_fetch_array($req)); }
Sans le mysql_num_rows, le programme s'exécutait correctement, excepté dans le cas où mon $req était vide car il n'y avait pas d'élément avec les critère de ma close where.
Dès que je mettais le mysql_num_rows, il plantait en me disant «paramater 1 expected to be resource in mysql_num_rows».
Utilisateur anonyme
25 mai 2012 à 14:07
25 mai 2012 à 14:07
Comment voulais-tu qu'on comprenne ton problème avec mysql_num_rows dans un code où il n'y avait aucun mysql_num_rows ?
Maintenant, c'est évident : si $chaine est vide, tu as $sql="SELECT * FROM adherant WHERE " ce qui est une requête incorrecte : il ne faut pas le mot WHERE, ou si tu mets le mot WHERE, il faut une condition.
Comme la requête est incorrecte, mysql_query ne rend pas une resource mais un booleen.
Et si tu donnes un booleen à manger à mysql_num_rows, il n'est pas content ,il veut à tout prix une resource.
Tu dis que tu veux toujours une réponse à ta question, mais laquelle ? Tu as l'explication pour mysql_num_rows et la question Mais comment chacune de ces fonction définissent-elles les "resource" ? n'a pas de sens, puisque ces fonctions ne définissent pas de resource.
Quand à savoir précisément ce qu'est une resource, quel intérêt ? Je t'en ai déjà donné une petite idée plus haut (en tous cas celle que je m'en fais). L'essentiel est de réussir à s'en servir.
La curiosité n'est pas un défaut dans ce domaine, mais pourquoi ne demandes-tu pas en premier lieu comment marchent toutes les fonctions des bibliothèques PHP ? Tu t'en sers, un point c'est tout. Et si tu tiens absolument à tout savoir, tu peux toujours télécharger le code source de PHP et l' étudier ^^
Maintenant, c'est évident : si $chaine est vide, tu as $sql="SELECT * FROM adherant WHERE " ce qui est une requête incorrecte : il ne faut pas le mot WHERE, ou si tu mets le mot WHERE, il faut une condition.
Comme la requête est incorrecte, mysql_query ne rend pas une resource mais un booleen.
Et si tu donnes un booleen à manger à mysql_num_rows, il n'est pas content ,il veut à tout prix une resource.
Tu dis que tu veux toujours une réponse à ta question, mais laquelle ? Tu as l'explication pour mysql_num_rows et la question Mais comment chacune de ces fonction définissent-elles les "resource" ? n'a pas de sens, puisque ces fonctions ne définissent pas de resource.
Quand à savoir précisément ce qu'est une resource, quel intérêt ? Je t'en ai déjà donné une petite idée plus haut (en tous cas celle que je m'en fais). L'essentiel est de réussir à s'en servir.
La curiosité n'est pas un défaut dans ce domaine, mais pourquoi ne demandes-tu pas en premier lieu comment marchent toutes les fonctions des bibliothèques PHP ? Tu t'en sers, un point c'est tout. Et si tu tiens absolument à tout savoir, tu peux toujours télécharger le code source de PHP et l' étudier ^^
Une pattate qui vole
Messages postés
35
Date d'inscription
mardi 22 mai 2012
Statut
Membre
Dernière intervention
13 juin 2012
25 mai 2012 à 14:17
25 mai 2012 à 14:17
Par moment j'ai vraiment du mal à analyser ce que j'écris ... Et dire que je fais des erreurs aussi stupides ...
Merci encore de aide ^^
Et au moins, la prochaine fois j'aurais besoin d'utiliser cette fonction, j'aurais moins de risque de faire l'erreur ^^
Merci encore de aide ^^
Et au moins, la prochaine fois j'aurais besoin d'utiliser cette fonction, j'aurais moins de risque de faire l'erreur ^^
25 mai 2012 à 12:02