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 :

MYSQLI et résultat de requête "SET .." [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Par défaut MYSQLI et résultat de requête "SET .."
    Bonjour.

    Je travail sur une application qui doit traiter des données multilingues. Du coup après ma connexion à une BDD, je paramètre l'encodage, des futures échanges avec la BDD, en UTF8.
    Pour cela j'utilise la requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8';
    Cette requête retourne un résultat vide même quand elle s’exécute correctement. Je n'arrive donc pas, en PHP, à savoir si la requête s'est bien exécutée ou si une erreur s'est produite.

    J'ai essayé plusieurs possibilité :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $db = new mysqli('localhost', '', '', 'maBDD');
    if(!$db->connect_errno){
    	$res = $db->query("SET character_set_results = 'utf8' ... "); // ma requête
    	if($res===false){echo 'failed setDBEncodage';} //la condition est toujours validé
    	if(!$res){echo 'failed setDBEncodage';} //la condition est toujours validé
    }else{ $this->log_->addRow('failed DB connection');}
    L'exécution de la requête (même fausse) ne génère pas d'erreur dans la BDD ... je ne peux donc pas utiliser "$db->connect_errno" après l'exécution de la requête.

    Existe t-il une solution pour contourner ce problème?

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Quelle requête "fausse" ne génère pas d'erreur ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Par défaut
    Par exemple si je fausse la requête et que je fais comme si dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $db = new SQL_CSVInterface('localhost', '', '', 'Mabase');
    if(!$db->connect_errno){
    	$res = $db->query("SE character_set_results = 'utf8'"); //J'ai supprimer le T de SET
    	echo 'connect_errno : '.$db->connect_errno; // affiche toujours : "connect_errno : 0"
    	if(!$res){ echo 'failed setDBEncodage';}
    }else{ echo 'failed DB connection';}
    Dans le SGBDR, la requête génère bien une erreur. Mais par le biais de MySqlI->query(), l'erreur ne remonte pas. Je n'arrive donc pas à faire la différence entre l'exécution normale qui ne retourne aucune résultat. Et l'exécution qui génère une erreur ... et qui du coup ne retourne pas de résultat non plus.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ton premier code fonctionne.

    Ton deuxième code est sensiblement différent, est-ce qu'il n'est pas plus proche du code réel dont tu nous parles ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Par défaut
    Je ne comprend pas ta question

    Pour être sûr de bien se comprendre je reformule mon problème :
    L'exécution de la requête "MySqlI->query("SET character_set_results = 'utf8'")" fonctionne mais renvoie toujours un résultat vide.
    => Comment faire pour savoir si il y a eu une erreur lors de l'exécution de la requête?

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Comme je t'ai dit, ton premier code fonctionne : quand la requête provoque une erreur, la méthode query() retourne bien FALSE.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Insérer résultat d'une requête : problème de quote
    Par maxime17s dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/12/2008, 03h42
  2. Pb Set quoted Identifier
    Par Yanmeunier dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/12/2005, 10h49
  3. Manipulations binaires : savoir si un bit est "set"
    Par DiGiTAL_MiDWAY dans le forum Général Python
    Réponses: 2
    Dernier message: 18/09/2005, 16h42

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