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 :

mysql_query et CREATE FUNCTION


Sujet :

PHP & Base de données

  1. #1
    Invité
    Invité(e)
    Par défaut mysql_query et CREATE FUNCTION
    Bonjour,
    Bien que la requête soit correct (tester sous Navicat), il n'est pas possible de l’exécuter sous PHP avec mysql_query.

    Voici la requête en question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SET NAMES utf8;
    CREATE FUNCTION translate(V_string VARCHAR(255), V_from VARCHAR(255), V_to VARCHAR(255))
    RETURNS VARCHAR(255) DETERMINISTIC
    BEGIN
    DECLARE i INT;
    SET i = CHAR_LENGTH(V_from);
    WHILE i > 0 DO
     SET V_string = REPLACE(V_string, SUBSTR(V_from, i, 1), SUBSTR(V_to, i, 1));
     SET i = i - 1;
    END WHILE;
    RETURN UPPER(V_string);
    END;
    Voici l'erreur retourné sous PHP:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE FUNCTION translate(V_string VARCHAR(255), V_from VARCHAR(255), V_to VARCH' at line 2
    Merci
    Dernière modification par Invité ; 12/09/2011 à 03h38.

  2. #2
    Invité
    Invité(e)
    Par défaut
    L'erreur vient de la ligne SET NAMES utf8;
    Il semble qu'il ne faut rien mettre avant CREATE.

    Voici le source du code
    http://inspirationgeek.com/blog/inde...ate-dans-Mysql

    Est-ce quelqu'un pourrait m'expliquer le fonctionnement de la fonction.
    De plus quel est l’intérêt de DELIMITER ?

    Merci d'avance.
    Dernière modification par Invité ; 12/09/2011 à 05h18.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 146
    Points : 262
    Points
    262
    Par défaut
    Effectivement en php il vaux mieux passer les requêtes 1 par 1

    Donc d'abord le set names et ensuite le create.

    La fonction est toute bête elle parcourt une chaine caractère par caractère et remplace un caractère par un autre.

    En gros cela reproduit la fonction str_replace de php (http://php.net/manual/fr/function.str-replace.php).

    Et dans le cadre d'un projet php n'as pas grand intérêt sauf si par exemple le serveur SQL est sur un autre serveur plus puissant et que tu veux décharger un peu ton serveur php.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Merci.

    Le seul avantage de ce type de fonction, c'est qu l'on peut traiter les valeurs de façon plus ciblé (1 colonne en particulier), alors que cela est moins évident à partir d'un fichier csv que l'on traite à l'aide de fonctions similaire pour ensuite l'intégrer dans une base à l'aide de LOAD DATA.

Discussions similaires

  1. [MySQL] mysql_query et "CREATE FUNCTION"
    Par darkterreur dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/03/2014, 10h33
  2. TOAD test CREATE FUNCTION
    Par magic charly dans le forum Toad
    Réponses: 6
    Dernier message: 24/01/2007, 10h59
  3. Creat Function => problème de sauvegarde
    Par popin dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 16/11/2006, 15h54
  4. CREATE FUNCTION
    Par zut94 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/11/2005, 16h53
  5. Create function sous condition
    Par nbl dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/05/2005, 12h00

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