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 :

[SQLite] Utilisation de REGEXP


Sujet :

PHP & Base de données

Vue hybride

lilivounet [SQLite] Utilisation de REGEXP 16/08/2009, 16h37
metagoto Et si tu passes 1 comme... 18/08/2009, 09h44
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 37
    Par défaut [SQLite] Utilisation de REGEXP
    Bonjour,
    Je suis surpris de ne pas avoir trouvé la réponse à ma question, ni dans le forum, ni sur php.net .
    J'espère ne pas avoir mal cherché...

    J'interroge une bdd SQL avec sqlite_query()
    Je souhaite passer une requête :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM datas WHERE champ REGEXP "essai";
    Ce qui échoue.
    Apparemment REGEXP dans SQLite ne marche pas par défaut :
    The REGEXP operator is a special syntax for the regexp() user function. No regexp() user function is defined by default and so use of the REGEXP operator will normally result in an error message. If a user-defined function named "regexp" is added at run-time, that function will be called in order to implement the REGEXP operator.
    J'ai essayé de définir ainsi la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function sqlite_regex($str, $regex) {
        if (preg_match($regex, $str, $matches)) {
            return $matches[0];
        }
        return false;
    }
    sqlite_create_function($this->db, 'REGEXP', 'sqlite_regex', 2);
     
    $result = sqlite_array_query($this->db, 'SELECT * FROM datas WHERE champ REGEXP "tex"' , SQLITE_ASSOC);
    Mais sans succès :
    Warning: sqlite_array_query() [function.sqlite-array-query]: near "REGEXP": syntax error
    Quelqu'un a une idée ?
    Merci.

  2. #2
    Membre très actif Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Par défaut
    Et si tu passes 1 comme nombre d'arguments plutôt que 2 ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sqlite_create_function($this->db, 'REGEXP', 'sqlite_regex'
      , 1 // 1 au lieu de 2
    );
    Edit: oula, non, désolé, je vois pas comment ça peut fonctionner avec juste 1 argument
    Et si tu nommes ta fonction 'regexp' (en minuscule) ?

Discussions similaires

  1. [SQLite] Utiliser la version 3.6.0
    Par bigane dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/10/2008, 00h26
  2. utilisation de RegExp,debutant
    Par Mobistar dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 12/08/2008, 17h11
  3. [SQLite] Utilisation avec PHP sous Debian
    Par Mil17 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 28/03/2008, 16h25
  4. [SQLite] Utiliser SQLite avec PHP4
    Par fadeninev dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/10/2006, 16h10
  5. [Tableaux] Utiliser un regexp ou non ?
    Par renaud26 dans le forum Langage
    Réponses: 4
    Dernier message: 18/07/2006, 13h35

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