Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/09/2011, 02h02   #1
Nouveau Membre du Club
 
Inscription : septembre 2008
Messages : 178
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 178
Points : 25
Points : 25
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 :
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:
Citation:
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
dxerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 04h03   #2
Nouveau Membre du Club
 
Inscription : septembre 2008
Messages : 178
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 178
Points : 25
Points : 25
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.
dxerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 07h54   #3
Membre confirmé
 
Inscription : juillet 2011
Messages : 146
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : juillet 2011
Messages : 146
Points : 253
Points : 253
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.
Tolriq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 08h40   #4
Nouveau Membre du Club
 
Inscription : septembre 2008
Messages : 178
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 178
Points : 25
Points : 25
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.
dxerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h48.


 
 
 
 
Partenaires

Hébergement Web