[php - sql] Qu'est-ce qu'une "resource" ?
Résolu
Une pattate qui vole
Messages postés
35
Date d'inscription
Statut
Membre
Dernière intervention
-
Une pattate qui vole Messages postés 35 Date d'inscription Statut Membre Dernière intervention -
Une pattate qui vole Messages postés 35 Date d'inscription Statut Membre Dernière intervention -
Bonjour à toutes et à tous.
Dans l'absolu, je sais. Ce sont les paramètres donnés aux fonction comme "mysql_fetch_array", "mysql_fetch_assoc", etc.
Mais comment chacune de ces fonction définissent-elles les "resource" ?
Plus concrètement pourquoi "mysql_num_rows" considère
Je vous remercie d'avance pour les réponses qui pourront m'être données.
Dans l'absolu, je sais. Ce sont les paramètres donnés aux fonction comme "mysql_fetch_array", "mysql_fetch_assoc", etc.
Mais comment chacune de ces fonction définissent-elles les "resource" ?
Plus concrètement pourquoi "mysql_num_rows" considère
$info=$_POST['IDAdherant']; if($info == ""){ $sql="SELECT * FROM adherant"; //60 }else{ $sql="SELECT * FROM adherant WHERE adherant.IDAdherant= '".$info."'"; }comme une "resource" et pas
$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;
Je vous remercie d'avance pour les réponses qui pourront m'être données.
A voir également:
- [php - sql] Qu'est-ce qu'une "resource" ?
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Logiciel sql - Télécharger - Bases de données
- Resource tuner - Télécharger - Personnalisation
- Resource hacker français - Télécharger - Édition & Programmation
3 réponses
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.
Une pattate qui vole
Messages postés
35
Date d'inscription
Statut
Membre
Dernière intervention
Je me suis en effet mal exprimé, je m'en excuse. Ce que je demandais, c'est pourquoi "mysql_fetch_..." arrive à reconnaitre, une fois le mysql_query appliqué, la requete «$sql="SELECT * FROM adherant WHERE ".$chaine;» comme une resource et pas mysql_num_rows. Ce que je demande c'est donc : quelles sont les différences, autre que la valeur retourné, entre mysql_fetch_... et mysql_num_rows ?
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.
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».
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 ^^