IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

variable résultat de la requête non renseignée


Sujet :

PHP & Base de données

  1. #1
    Invité
    Invité(e)
    Par défaut variable résultat de la requête non renseignée
    Bonjour, j'ai un petit souci que je ne comprend pas malgré mes recherches.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    if (!@copy($source, $destination)) {echo("Erreur: le fichier n'existe pas.");}
     
    if (file_exists($out)) {unlink($out);}
     
    //Correction des caractères du fichier
    if (($handle = fopen($in, "r")) !== FALSE)
    {
    $flag = true;
        while(($content = fgets($handle, 4096))!== FALSE)
        {
        	if ($flag) {$flag = false; continue;}
    	$content = strtohex($content);
    	$content = strfixchar($content);
    	$content = hextostr($content);
    	$content = preg_replace("/([a-zA-Z])('')/", "$1'", $content);
    	$content = preg_replace("/([0-9])('')/", "$1\"", $content);
    	file_put_contents($out, $content, FILE_APPEND | LOCK_EX);
        }
        fclose($handle);
    }
     
    mysql_query("
    LOAD DATA LOCAL INFILE '".$out."'
    	INTO TABLE ps_import
    FIELDS
    	TERMINATED BY ';'
    	ESCAPED BY ''
    LINES
    	TERMINATED BY '\r\n'
    IGNORE 1 LINES
    	(categorie_1, categorie_2, categorie_3, reference, 
    	fabricant, libelle, description, prix, frais_livraison, 
    	prix_ht, url_image, disponibilite, poids, poids_volume, 
    	ecotaxe, ean)
    ");
     
    $a = "SELECT id_cat_1, categorie_1 FROM ps_import GROUP BY id_cat_1";
     
    $sql_category = mysql_query($a);
    La variable $ sql_category n'est affectée d'aucune valeurs, bien que les requêtes soient correctes.

  2. #2
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    Bonjour,

    mysql_query renvoie une ressource.

    Doc

    un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump($sql_category)
    affiche quoi ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Il m'affiche bool(false) et la fois suivante resource(18852) of type (mysql result). On à l'impression que l'affectation est hasardeuse

  4. #4
    Invité
    Invité(e)
    Par défaut
    J'ai une fonction de connexion à la base placé au début du fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect_bd("host", "user", "pass", "base");
    Je l'ai placé après le flcose de la façon suivante et cela semble fonctionner mais sans comprendre pourquoi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        fclose($handle);
    }
    connect_bd("host", "user", "pass", "base");

  5. #5
    Invité
    Invité(e)
    Par défaut
    Voici la fonction de connexion à la base de données:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function connect_bd($serveur, $user, $password, $base)
    {
    $connexion = mysql_connect($serveur,$user,$password) or die("<p class='avertissement'>ATTENTION : Connexion impossible au serveur SQL</p>");
    $db = mysql_select_db($base, $connexion) or die("<p class='avertissement'>ATTENTION : Connexion impossible à la base de données</p>");
    }
    Si j'appel cette fonction en début de fichier, un mysql_query ne renvoie aucune valeur, ni erreur. Si il est placé après le fclose, mysq_query fonctionne.
    Tandis que si j'utilise require("connexion.php") en début de fichier avec les mêmes valeurs que la fonction je n'ai pas le problème.

    Au final, je ne parviens pas à comprendre pourquoi, donc si quelqu'un à une explication, merci d'avance

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Citation Envoyé par dxerty Voir le message
    Il m'affiche bool(false) et la fois suivante resource(18852) of type (mysql result). On à l'impression que l'affectation est hasardeuse
    L'affectation n'est pas exactement hasardeuse

    Citation Envoyé par PHP.net
    Pour les requêtes du type SELECT, SHOW, DESCRIBE, EXPLAIN et les autres requêtes retournant un jeu de résultats, mysql_query() retournera une ressource en cas de succès, ou FALSE en cas d'erreur.
    Donc la première fois, la requête a planté pour une raison quelconque. La seconde fois, la requête a fonctionné, mais tu n'en exploites pas le résultat.
    Je te conseille de jeter un oeil à ce tuto : passer des requêtes MySQL en PHP (et éventuellement celui-ci sur PDO)

    En revanche, pour ton histoire de fclose, là je sais pas

  7. #7
    Invité
    Invité(e)
    Par défaut
    Il n'affecte pas de valeur à cette variable car en utilisant une fonction placé avant mon fgets pour me connecter à la base (et non un include) cela pose problème (sans comprendre pourquoi. Et PHP ne me retourne pas d'erreur de connexion). Il n'affecte pas de valeur à la variable.

    J'ai déjà essayé PDO. Mais comme j’avais déjà des lignes avec des commandes non PDO, cela posai problème et je ne souhaitais pas non tout ré-adapter par manque de temps.

    Pour le lien, je connais. Merci quand même.

    C'est surtout cette curiosité avec la fonction que j'aimerai comprendre.

  8. #8
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    salut,

    c'est normal de fermer le fichier que tu veux remplir avec ton fget avant de pouvoir le charger dans ta bd non?

    ta connexion à la bd est forcément aléatoire vu que tu testes pas si elle a réussi et que ta fonction connect_bd ne renvoie pas la ressource ($bd) que tu devrais tester et si elle est différente de false l'utiliser dans ton mysql_query (paramètre optionnel)

    bref je crois que tu dois revoir un peu beaucoup la séquence de connexion à une bd avec le connecteur mysql

Discussions similaires

  1. [MySQL] requête SQL avec variables non renseignées
    Par Boris56 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 08/03/2010, 15h50
  2. ajouter le résultat d une requête à la variable d une table
    Par Claire07 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 19/06/2006, 15h03
  3. affecter le résultat d'une requête à une variable
    Par zut94 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 06/10/2005, 18h21
  4. Réponses: 3
    Dernier message: 22/07/2005, 13h12
  5. Résultat d'une requête dans une variable...
    Par Hoegaarden dans le forum Bases de données
    Réponses: 6
    Dernier message: 28/04/2004, 14h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo