Bien voilà, c'est mon premier message sur un forum php....car jusqu'à la version de mysql, je ne voyais aucun intérêt à travailler avec php voir de le proposer à un de mes clients !
Ce qui m'a poussé à commencer mes tests sont bien entendu le fait que maintenant, nous avons la possibilité d'utiliser des procédures stockées, des fonctions, des vues et des déclencheurs.....
Pour info, celà fait environ 5 ans que je développe en PL/SQL alors qu'elle ne fut pas ma joie en voyant ses nouvelles possibilités.
Pour commencer, pour mysql5, on est encore au bal du ciment, il y a encore des multitudes d'amélioration à effectuer.
Pour montrer comment utiliser ces procédures, j'ai créé une base test_mysql5 simplement avec une table note (id,texte) et quelques procédures stockées.
Ci-dessous le code des procédures. Attention à ma connaissance pour le moment, il n'y a pas d'éditeur, il faut donc utiliser la console mysql sous dos ou linux. On oubliant pas de mettre un delimiter:
ex: delimiter ¦
Code : Tout sélectionner
CREATE PROCEDURE insertion_note (IN param1 VARCHAR(4000))
BEGIN
INSERT NOTE (texte) VALUES (param1);
END
CREATE PROCEDURE insertion_note_subtil (IN param1 VARCHAR(4000))
BEGIN
DECLARE w_texte VARCHAR(4000);
DECLARE w_b_trouve INT DEFAULT 0;
DECLARE w_id INT;
DECLARE done INT DEFAULT 0;
DECLARE curs CURSOR FOR SELECT id,texte FROM note;
OPEN curs;
REPEAT
FETCH curs INTO w_id,w_texte;
IF not done THEN
IF w_texte = param1 THEN
SET w_b_trouve = 1;
DELETE FROM note WHERE id=w_id;
END IF;
END IF;
UNTIL done END REPEAT;
IF trouve = 0 THEN
insert NOTE (texte) VALUES (param1);
END IF;
CLOSE curs;
END
¦
<?php
$mysqli = new mysqli("localhost", "root", "", "test_mysql5");
/* Vérification de la connexion */
if (mysqli_connect_errno()) {
printf("Connexion échouée : %s\n", mysqli_connect_error());
exit();
}
else
printf("ok for connect");
$query = "CALL insertion_note ('arthur est mon premier bebe') ";
$mysqli->query($query);
printf("Code Erreur : %d\n", $mysqli->errno);
$query = "CALL insertion_note_subtil('arthur est mon premier bebe')";
$mysqli->query($query);
$var = "25031976";
$query = "CALL insertion_note ('$var') ";
$mysqli->query($query);
$mysqli->close();
?>
Alors quelques commentaires, le fonctionnement des procédures avec des variables INOUT n'a pas l'air de fonctionner correctement où j'ai mal compris et dans ce cas, jattends vos commentaires là dessus car je pensais pouvoir changer des variables provenant de mon php.Concernant les fonctions, apparament, en tous cas, je n'ai pas réussi à faire références à des tables. Donc l'utilité me semble pour le moment très limitée !
Donc voilà mes premiers petits tests.....je suis impatient de voir la prochaine version de mysql au plus vite pour corriger ces petits détails mais quand même chapeau......car d'après moi, les aller-retour entre le client et le serveur vont pouvoir être fortement limité et le code php va pouvoir ressembler à du vrai code..et non à des usines à gaz !
Pour finir, si vous êtes des développeurs acharnés php désolé d'avoir montré des exemples aussi simple mais pour expliquer aux personnes débutantes, il me semble que c'est mieux ainsi et si vous hésitez à passer en mysql5 alors n'hésitez plus !
J'attends vos commentaires !