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 :

Emploi de LIKE [PDO]


Sujet :

PHP & Base de données

  1. #1
    Invité
    Invité(e)
    Par défaut Emploi de LIKE
    Bonjour,
    J'ais déjas résolu bien des syntaxes pour PDO en fonction du serveur, (je veux dire des versions de PDO) ...

    J'arrives a chaque fois a trouver la bonne syntaxe qui marche sur les trois serveurs ou sont mes sites web, ainsi qu'en local , et franchement c'est une faiblesse de PDO a mon sens , par rapport a MySql.

    Le dernier point ou je n'arrives pas a choisir est le LIKE

    je testes ces deux variantes


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?PHP
    $result = $bdd->prepare("SELECT * FROM fi_messages WHERE  MsgFilNum LIKE :LeCherche ORDER BY MsgDateClair DESC");
    $result->execute(array(':LeCherche' =>$LeForum.'%'));
    ?>
    OU

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?PHP
    $result = $bdd->prepare("SELECT * FROM fi_messages WHERE  MsgFilNum LIKE CONCAT(:LeCherche, '%' ) ORDER BY MsgDateClair DESC");
    $result->execute(array(':LeCherche' =>$LeForum));
    ?>
    Apparament les deux marchent sur tout mes sites ...
    Quel serait votre choix ?
    Merci

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    c'est une faiblesse de PDO a mon sens , par rapport a MySql
    Les syntaxes SQL sont les mêmes quelque soit l'extension utilisée ; même s'il y a des différences au niveau des fonctionnalités gerées par l'extension.
    Il ne peut pas d'ailleurs y avoir de différence, PHP se contente de transmettre la requête.

    Pour le choix c'est sensiblement la même chose : on ne parle que de concatener deux chaînes, je ne pense pas que PHP ou Mysql ait un talent particulier sur ça.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Les syntaxes SQL sont les mêmes quelque soit l'extension utilisée ; même s'il y a des différences au niveau des fonctionnalités gerées par l'extension.
    Il ne peut pas d'ailleurs y avoir de différence, PHP se contente de transmettre la requête.
    Merci de ta réponse, je parle de syntaxe, dans les requétes écrites en PHP et destinées a SQL via MySql, la syntaxe est bien rodée, et une même syntaxe fonctionne sur tout les serveurs, je veux dires versions ...

    Pour PDO ce n'est pas le cas et de plus sans vraiment étre logique !

    Prends par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?PHP
    $result = $bdd->prepare("UPDATE messages SET MsgTexte = :MsgT WHERE MsgId=:MsgI");
     $result->execute(array(':MsgT' =>  $LArea,':MsgI' => $LeData));
    ?>
    Tout ce joue sur la présence de ':MsgI' ou de :MsgI dans le prepare
    Ensuite dans l'Array de l'execute.
    La version que je cites ici est la seule qui marche sur tout mes serveurs ...
    Le plus récent ( chez "Mailclub" ) interdit tout autre écriture comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?PHP
    $result = $bdd->prepare("UPDATE messages SET MsgTexte = :MsgT WHERE MsgId=:MsgI");
     $result->execute(array(MsgT =>  $LArea,':MsgI' => $LeData));
    ?>
    OU

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?PHP
    $result = $bdd->prepare("UPDATE messages SET MsgTexte = ':MsgT' WHERE MsgId=:MsgI");
     $result->execute(array(:MsgT =>  $LArea,':MsgI' => $LeData));
    ?>
    voila pourquoi j'ais écris
    c'est une faiblesse de PDO a mon sens , par rapport a MySql
    Tu vois mon soucis

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Tes deux syntaxes sont fausses.

    Les paramètres dans la requête paramétrée s'écrivent directement, donc pas de ':MsgT'

    Les clefs de tableau PHP prennent des guillemets lorsque ce sont des chaines (sinon il y a confusion avec une constante) ; donc array(':MsgT' => $LArea)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ah mais oui, j'ais même testé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    <?PHP
    $result = $bdd->prepare('UPDATE messages SET MsgTexte = :MsgT WHERE MsgId=:MsgI');
     $result->execute(array(':MsgT' =>  $LArea,':MsgI' => $LeData));
    ?>
    Merci a toi

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    je ne comprends pas ton message.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Invité
    Invité(e)
    Par défaut
    Juste je te disais merci et affiché la version corrigée
    compte tenu de tes remarques, précisant que j'avais testé et c'es effectivement OK ce qui ne m'étonnes pas de toi

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

Discussions similaires

  1. Le grand mode d'emploi du forum, à lire si vous souhaitez tout savoir !
    Par Anomaly dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 03/06/2013, 17h36
  2. Utilisation spéciale de LIKE
    Par tonyskn dans le forum Langage SQL
    Réponses: 2
    Dernier message: 30/05/2003, 12h45
  3. [VB6] [ADO] Like sur base Access
    Par dlpxlid dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 24/01/2003, 11h03
  4. Créer un interpréteur de langage inspiré du Basic
    Par Picasso dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 11/05/2002, 17h10

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