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 :

concaténation dans la requête [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2016
    Messages : 22
    Par défaut concaténation dans la requête
    Bonjour,
    Je suis novice en PDO et je réalise actuellement un programme pour gérer les ressources documentaires.
    Voici actuellement le code que j'ai:
    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
    try 
    		{
    			$pdo_options = [
    			PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION // activation des erreurs via exceptions
    			// on peut ajouter d'autres options
    			];
    			$con = new PDO("odbc: Driver={Microsoft Access Driver (*.mdb)};Dbq=D:/Users/valentin.guichard/Documents/Decouverte_php/Index.mdb;Uid=; Pwd=;","","",$pdo_options);
    			$SQLtemp = <<<EoQ
    			SELECT iq.Nom, iq.Type_Document_Repertoire, iq.Libelle_document, iq.Langue 
    				FROM IndexQualite iq
    			WHERE iq.Langue ='Francais' AND iq.COURBON ='x' AND iq.Nom LIKE CONCAT('%', :NomFichier1, '%')
    			ORDER BY iq.Nom;
    EoQ;
    			$rstemp = $con->prepare($SQLtemp); 
    			$rstemp->bindValue(':NomFichier1', $NomFichier1, PDO:: PARAM_STR);
    			$rstemp->execute();
    			$resrs= $rstemp->fetchAll(PDO::FETCH_ASSOC);
    			var_dump($resrs); //pour voir ce que j'ai comme résultat
    			$rstemp->closeCursor();
     
    			// ici tout le traitement SQL, requêtes + boucles de lecture
    			}
    			catch(PDOException $ex) {
    			if(isset($con) and ($con instanceof PDO) and $con->inTransaction())
    			$con->rollBack();
    			error_log('Erreur SQL : ' . $ex->getMessage()); // dans le fichier de logs de PHP
     
    		}
    Le code fonctionne si j'enlève la concaténation dans la requête et me retourne les valeurs attendues. J'ai malheureusement besoin de cette concaténation pour poursuivre...
    Quelqu'un aurait-il la solution?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    c'est comme ça que ça fonctionne :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    		$SQLtemp = "SELECT iq.Nom, iq.Type_Document_Repertoire, iq.Libelle_document, iq.Langue 
    				FROM IndexQualite iq
    			WHERE iq.Langue ='Francais' AND iq.COURBON ='x' AND iq.Nom LIKE :NomFichier1 )
    			ORDER BY iq.Nom";
     
    			$rstemp = $con->prepare($SQLtemp); 
    			$rstemp->bindValue(':NomFichier1', '%'.$NomFichier1.'%', PDO:: PARAM_STR);

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2016
    Messages : 22
    Par défaut
    Merci pour ta solution!

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2016
    Messages : 22
    Par défaut
    Par contre cette méthode ne fonctionne pas si je veux y mettre plusieurs conditions?
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    		$SQLtemp = "SELECT iq.Nom, iq.Type_Document_Repertoire, iq.Libelle_document, iq.Langue 
    				FROM IndexQualite iq
    			WHERE iq.Langue ='Francais' AND iq.COURBON ='x' AND (iq.Commentaires_evolution LIKE :NomFichier1 OR iq.Nom LIKE :NomFichier1 OR iq.Libelle_document LIKE :NomFichier1) ORDER BY iq.Nom";
     
    			$rstemp = $con->prepare($SQLtemp); 
    			$rstemp->bindValue(':NomFichier1', '%'.$NomFichier1.'%', PDO::PARAM_STR);

  5. #5
    Invité
    Invité(e)
    Par défaut
    Il faut un "placeholder" différent pour chaque (meme si la valeur est la même)
    et autant de >bindValue que de "placeholder" :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    			$SQLtemp = "SELECT iq.Nom, iq.Type_Document_Repertoire, iq.Libelle_document, iq.Langue 
    			FROM IndexQualite iq
    			WHERE iq.Langue ='Francais' AND iq.COURBON ='x' 
    			AND (iq.Commentaires_evolution LIKE :choix1 
    				OR iq.Nom LIKE :choix2 
    				OR iq.Libelle_document LIKE :choix3) 
    			ORDER BY iq.Nom";
     
    			$rstemp = $con->prepare($SQLtemp); 
    			$rstemp->bindValue(':choix1', '%'.$NomFichier1.'%', PDO::PARAM_STR);
    			$rstemp->bindValue(':choix2', '%'.$NomFichier1.'%', PDO::PARAM_STR);
    			$rstemp->bindValue(':choix3', '%'.$NomFichier1.'%', PDO::PARAM_STR);

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2016
    Messages : 22
    Par défaut
    Merci ça marche niquel!!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/05/2008, 10h09
  2. Problèmes d’enregistrement dans une requête.
    Par alainmante dans le forum IHM
    Réponses: 3
    Dernier message: 11/05/2008, 12h57
  3. Réponses: 3
    Dernier message: 19/04/2007, 11h30
  4. Problème de concaténation dans une requête
    Par Miss Ti dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 06/04/2007, 17h22
  5. [Conception] Concaténation dans une requête
    Par toddy_101 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/01/2007, 14h33

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