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 :

Requêtes préparées avec variables


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2013
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 226
    Par défaut Requêtes préparées avec variables
    Bonjour,

    J'utilise cette requête, qui fonctionne, sur mon serveur de développement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $sql = <<<SQL
    SELECT titleSort, seriesTitle,  seriesId, releaseYear FROM SORTLIST
    WHERE titleSort LIKE ".$letter.%" OR REGEXP_LIKE(TitleSort, "^['$letter']") 
    ORDER BY titleSort, releaseYear
    SQL;	
     
    $query = $pdo->prepare($sql);
    $query->execute();
    $rows = $query->fetchAll();
    Par contre, le serveur de mon hébergeur me retourne l'erreur:
    Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1305 FUNCTION serie2150381.REGEXP_LIKE does not exist in /htdocs/series/series_index.php:17 Stack trace: #0 /htdocs/series/series_index.php(17): PDO->prepare('SELECT titleSor...') #1 /htdocs/accueil.php(63): include('/htdocs/series/...') #2 {main} thrown in /htdocs/series/series_index.php on line 17

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Par défaut
    La version de Mysql (ou Mariadb) ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2013
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 226
    Par défaut
    Il s'agît de MariaDB version 10.3.38.

    Je 'm'excuse, j'ai oublié de le préciser. Et mon serveur local est un serveur mySQL 8.

    Problème de compatibilité je présume ?

    Je n'ai malheureusement pas l'habitude de travailler sous MariaDB.

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    MariaDB ne supporte par REGEXP_LIKE() => https://mariadb.com/kb/en/regular-ex...ons-functions/


    Attention à $sql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql = <<<SQL
    SELECT titleSort, seriesTitle,  seriesId, releaseYear FROM SORTLIST
    WHERE titleSort LIKE ".$letter.%" OR REGEXP_LIKE(TitleSort, "^['$letter']") 
    ORDER BY titleSort, releaseYear
    SQL;
    En SQL " est un délimiteur de nom d'objet, pas un délimiteur de chaîne
    MySQL / MariaDB peuvent accepter " en tant que ', mais la requête n'est plus portable et peut ne plus fonctionner correctement selon la config serveur (sql_mode => ANSI_QUOTES)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE titleSort LIKE ".$letter.%"
    Bizarre cette syntaxe, pas sûr que c'est réellement ce que tu veux.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2013
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 226
    Par défaut
    Bizarre cette syntaxe, pas sûr que c'est réellement ce que tu veux.
    Le but est de chercher et d'afficher toutes les séries commençant par la lettre sur laquelle on clique.

    Finalement, j'ai trouvé une solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE titleSort RLIKE '^[$letter]'

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

Discussions similaires

  1. Requête SQL avec variables
    Par BMT_Benoît dans le forum Windows Forms
    Réponses: 36
    Dernier message: 12/07/2007, 12h35
  2. Requête access avec variable
    Par hari37 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 19/04/2007, 18h16
  3. Problème avec requête SQL avec variables
    Par harry25 dans le forum ASP
    Réponses: 1
    Dernier message: 03/01/2007, 03h41
  4. Réponses: 7
    Dernier message: 11/10/2006, 13h35
  5. Requête UPDATE avec variables...
    Par yokyok dans le forum Outils
    Réponses: 2
    Dernier message: 18/05/2006, 10h37

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