Premier test php 5 et mysql 5

Petit nouveau ! | 7 Messages

31 oct. 2005, 10:17

Hello,

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 ¦
Ce sont des procédures toutes simples et sans aucun intêret même voire stupide mais pour tester..... Ensuite de quoi j'ai fait l'appel de ces procédures dans php. Attention, il faut utiliser la classe mysqli.
<?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 ! :roll: :shock:
Walt

Mammouth du PHP | 19672 Messages

31 oct. 2005, 10:29

C'est effectivement extrêmement intéressant et ça ouvre des perspectives réjouissantes :)

Note : J'ai remis en forme ton message, n'oublie pas l'utilisation des boutons [code] ou [php] pour afficher du code, une coloration syntaxique et une indentation conservée rendent la chose plus simple à la lecture.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 7 Messages

31 oct. 2005, 11:41

merci pour l'info !
Walt

Eléphanteau du PHP | 14 Messages

31 oct. 2005, 12:02

ene ffet les procédures sont très interressantes! j' ai encore un peu de mal à m' habituer à la syntaxe mais je pense que ca va vite aller :) J' espère que les hebergeurs vont vite proposer mysql 5 :)

Petit nouveau ! | 7 Messages

31 oct. 2005, 12:06

La syntaxe se rapproche énormément du PL/SQL et je pense que les hébergeurs devront rapidement proposer cette solution sans trop attendre !

Car c'est vraiment un grand pas qui vient d'être passer !

As tu tenté l'ut6ilisation des fonctions avec des tables ? Je crois que ce n'est pas possible pour le moment mais on ne sait jamais......
Walt

Eléphant du PHP | 70 Messages

31 oct. 2005, 14:06

C'est bien, l'usine à gaz n'est plus dans l'application elle est dans la base de données :lol: :idea:

C'est juste pour dire que comme pour tout il faut faire une utilisation pertinente des procédures stockées.

Petit nouveau ! | 7 Messages

31 oct. 2005, 15:05

On entre maintenant dans une version nettement plus structuré et se rapprochant de langage de programmtion plus commun !
Walt