Paramètres $stmp et UPDATE

Répondre
jackbocar
jackbocar
Déconnecté
L'homme sage est celui qui connaît ses limites
Bonjour,

Peux-on utiliser ses paramètres pour faire un UPDATE table SET :
  1.  
  2. <?php
  3. $stmt = mysqli_prepare($db, "UPDATE table SET
  4. ?>
  5.  


Si c'est possible, merci de me faire un exemple, je n'y parviens pas.

Mon code :

  1.  
  2. <?php
  3.  
  4. if (isset($_POST['auteur']) && isset($_POST['categorie']) && isset($_POST['image']) && isset($_POST['titre']) && isset($_POST['menu']) && isset($_POST['news']) && isset($_POST['isbn']) && isset($_POST['visible']) && is_numeric($_POST['visible'])) {  
  5.  
  6. if ($db = @mysqli_connect('localhost', 'jackbocar', 'password')) {  
  7. mysqli_select_db($db, 'php5');  
  8. $stmt = mysqli_prepare($db, "UPDATE table SET (auteur, categorie, image, titre, menu, news, isbn, visible) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");  
  9.  
  10. $auteur = mysqli_real_escape_string($db, $_POST['auteur']);  
  11. $categorie = mysqli_real_escape_string($db, $_POST['categorie']);  
  12. $image = mysqli_real_escape_string($db, $_POST['image']);  
  13. $titre = mysqli_real_escape_string($db, $_POST['titre']);  
  14. $menu = mysqli_real_escape_string($db, $_POST['menu']);  
  15. $news = mysqli_real_escape_string($db, $_POST['news']);  
  16. $isbn = mysqli_real_escape_string($db, $_POST['isbn']);  
  17. $visible = intval($db, $_POST['visible']);  
  18.  
  19. mysqli_stmt_bind_param($stmt, 'sssssssi', $auteur, $categorie, $image, $titre, $menu, $news, $isbn, $visible);  
  20. if (mysqli_stmt_execute($stmt)) {  
  21. echo 'Ouvrage sauvé.';  
  22. } else {  
  23. echo 'Erreur lors de l\'écriture du livre.';  
  24. }  
  25. mysqli_close($db);  
  26. } else {  
  27. echo 'Connection failed.';  
  28. }  
  29. }  
  30. ?>
  31.  


Merci

Jack Bocar
moogli
moogli
Déconnecté
Il en faut peu pour être heureux !!!!!
salut,

je ne suis pas familier de mysqli mais je crois que ta requête n'est pas correctement formée ;)

pour t'en convaincre le mieux est de regarder la syntaxe d'update dans la doc http://dev.mysql.com/doc/refman/5.0/fr/update.html

(t'a mélanger insert et update).

@+
jackbocar
jackbocar
Déconnecté
L'homme sage est celui qui connaît ses limites
Bonjour,

Merci de ta réponse, en farfouillant un peu partout, j'ai trouvé ceci :

  1.  
  2. <?php
  3. include('connexion.php');  
  4.  
  5. $titre = $_POST['titre'];  
  6. $nouvelle = $_POST['nouvelle'];  
  7. $id = $_POST['id'];  
  8.  
  9. $query = sprintf("UPDATE MA BASE SET titre = '%s', nouvelle = '%s' WHERE id = '%s'",  
  10. mysql_real_escape_string($titre),  
  11. mysql_real_escape_string($nouvelle),  
  12. mysql_real_escape_string($id)); 
  13.    
  14. echo $query; 
  15.    
  16. $db = NEW mysqli;  
  17. if ($db->requete($query)==true){  
  18. echo "<center>Modification réussi.</center>";  
  19. }  
  20. ?>
  21.  


Je test pour voir les résultats, mais si vous avez une autre idée, elle est la bien venue

Jack Bocar
moogli
moogli
Déconnecté
Il en faut peu pour être heureux !!!!!
si j'ai bien tout lu je crois que tu ne peut pas utiliser le prépare pour un update, je conseil de bien relire la doc à se sujet la.

si non sur le principe ce que tu a mis en dernier code devrait fonctionner, sinon y a la simple utilisation de la concaténation ;)

@+
jackbocar
jackbocar
Déconnecté
L'homme sage est celui qui connaît ses limites
Bonjour,

Oui, tu as raison, pour "utilisation de la concaténation", c'est ce que j'utilise en ce moment.

Mais, je voudrais arriver à n'utiliser que du codage PHP5.

Et puis, j'ai passé des heures à rechercher dans des livres sur Internet et effectivement, je n'ai rien vu avec PREPARE. Je change pour le script de mon dernier poste. Et on verra bien si c'est fonctionnel.

Jack Bocar
LupusMic
LupusMic
Déconnecté
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Je trouve les exemples de la documentation officielle très parlants. Tu devrais la relire.

  1. <?php
  2. $dbcon = new mysqli(/* ... */) ;  
  3. $stmt = $dbcon->stmt_init() ;  
  4. $stmt->prepare('update nouvelles set titre = ?, nouvelle = ? where id = ?') ;  
  5. // on a pas besoin de recourir à mysql_escape_string avec les statement  
  6. $stmt->bind_param('ssi', $_POST['titre'], $_POST['nouvelle'], $_POST['id']) ;  
  7. $stmt->execute() ;  
  8. if($stmt->affected_rows > 0)  
  9. /* modif effectuée */ ;  
  10. ?> 

Bien sûr, il faudra veiller au retour de chaque fonction utilisée.
jackbocar
jackbocar
Déconnecté
L'homme sage est celui qui connaît ses limites
Bonjour,

Merci des infos, je vais tester.

Donne moi l'adresse où tu trouves ces informations.

Je n'ai pas encore trouvé un site pas plus sur php.net qui donne les infos que tu viens de me donner.

Jack Bocar
LupusMic
LupusMic
Déconnecté
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Toutes les informations sont dans la documentation. Bien sûr il faut lire la documentation des classes et des fonctions, mais aussi les commentaires qui sont souvent très intéressants.
jackbocar
jackbocar
Déconnecté
L'homme sage est celui qui connaît ses limites
Bonjour,

Merci du lien, je connaissais cette page et je l'ai parcourue des dizaines de fois.

J'avoue en recherchant d'après le modèle de code que tu m'as donné, j'ai trouvé :
http://fr.php.net/manual/fr/mysqli.prepare.php
Mais, je n'aurais jamais pensé à utiliser ce codage pour UPDATE SET.

Tu me dis : "mais aussi les commentaires qui sont souvent très intéressants". Oui, bien sûr, mais, à aucun moment sur cette page, j'ai vu que l'on pouvait utiliser ce code avec UPDATE.

De plus mille mercis pour ton aide, j'ai enfin réussi à me faire un codage PHP5 pour mon UPDATE, sans être obligé de passer la "concaténation".


Jack Bocar

PS, pense à me donner si tu en as des informations sur la construction des arbres, liens, livres à acheter, enfin tous ce qui pourrait m'être utile pour envisager un nouveau système de codage.
LupusMic
LupusMic
Déconnecté
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Je comprends mieux ton soucis, c'était la syntaxe SQL de Update qui te perturbait. Pour ça il faut aussi utiliser la doc en ligne de MySQL. La description de la syntaxe n'y est pas des plus accessible, mais on s'en sort.

Si l'anglais n'est pas un problème, je peux te conseiller « php|architect's - Guide to PHP Design Pattern » isbn:0-9735898-2-5
Ce bouquin développe l'usage des design patterns appliqués au PHP, et donne pas mal d'idées intéressantes.

Ensuite, pour l'algorithmie, ça va être plus dur. Si tu n'as pas peur, tu peux regarder du côté des ouvrages Java ou C++ (voir C). Les meilleurs livres sont édités aux éditions O'Reilly. À savoir que, malheureusement, O'Reilly France ferme ces portes. Les livres en français risquent donc de devenir rare chez cet éditeur.
jackbocar
jackbocar
Déconnecté
L'homme sage est celui qui connaît ses limites
Bonjour,

Merci des informations, je vais me procurer cet ouvrage.

Jack Bocar
Répondre
Accès rapide :

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Php - Breizh Blog