faire un update de variables en pdo

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : faire un update de variables en pdo

Re: faire un update de variables en pdo

par bertrandperrier » 14 avr. 2010, 16:19

pourtant j'avai lus, sur le site http://www.siteduzero.com/tutoriel-3-14 ... #ss_part_2 qu'il fallais utiliser execute(array( pour introduire des variables pour se protéger des injections
mais il ne l'utilise pas pour le nom de la table

erreur de ma part

merci beaucoup de votre aide

Re: faire un update de variables en pdo

par stealth35 » 14 avr. 2010, 16:09

ouai, le coup du nom de table dynamique je assez sceptique sur la méthode, il a l'aire de pas trop aimer, faudrait regarder si en manuel ca marche

Re: faire un update de variables en pdo

par bertrandperrier » 14 avr. 2010, 16:00

mon php marche bien quand j'écrit en dur le nom de la table sans passer par l'array
$sql=('UPDATE is_cool_manque_double SET `manque` = :nv_double, `double` = :nv_manque WHERE `id` = :nv_id');

Re: faire un update de variables en pdo

par bertrandperrier » 14 avr. 2010, 15:48

dans l'erreur il y a une apostrophe aprés le nom de la table, il ne doit pas en avoir dans une requete comment l'enlever ?

Re: faire un update de variables en pdo

par bertrandperrier » 14 avr. 2010, 15:45

mon php lance la requete suivante
UPDATE is_cool_manque_double SET manque = "0011001100101101010111001110111000001110001100110010110101011100111011100000111000110011001011010101110011101110000011100011001100101101010111001110111000001110001100110010110101011100111011100000111000110011001011010101110011101110000011", double = "1000110110111011101110100011001011011000111000110110111011101110100011001011011000111000110110111011101110100011001011011000111000110110111011101110100011001011011000111000110110111011101110100011001011011000111000110110111011101110100011" WHERE id = 1
sous phpmyadmin pour qu'elle marche faut que je rajoute ` (Alt Gr 7) pour chaque nom de champ

j'ai donc modifié mon php
$sql=('UPDATE :nv_table SET `manque` = :nv_manque, `double` = :nv_double WHERE `id` = :nv_id');
mais j'ai l'erreur suivante
Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[42000]: Syntax error or access violation: 1064 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 ''is_cool_manque_double' SET `manque` = '0011001100101101010111001110111000001110' at line 1 in /var/www/album_is_cool/update.php on line 68

Re: faire un update de variables en pdo

par stealth35 » 14 avr. 2010, 15:33

ta essayer de faire ta requête manuellement (sous phpmyadmin par exemple ?)

Re: faire un update de variables en pdo

par bertrandperrier » 14 avr. 2010, 15:30

maintenant avec ce que tu m'a fait mettre dans mon instance, j'ai
Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[42000]: Syntax error or access violation: 1064 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 ''is_cool_manque_double' SET manque = '001100110010110101011100111011100000111000' at line 1 in /var/www/album_is_cool/update.php on line 60

Re: faire un update de variables en pdo

par stealth35 » 14 avr. 2010, 15:28

c'est que t'as pas d'erreur,
pour faire un affichage global au lieux de le faire a chaque fois fais (après ton instance new PDO)
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

Re: faire un update de variables en pdo

par bertrandperrier » 14 avr. 2010, 15:26

print_r($bdd->errorInfo()); me retourne
Array ( [0] => 00000 ) 

Re: faire un update de variables en pdo

par stealth35 » 14 avr. 2010, 15:24

oui, par contre c'est
print_r($req->errorInfo());

Re: faire un update de variables en pdo

par bertrandperrier » 14 avr. 2010, 15:19

$bdd->errorInfo(); ne me renvoie rien
quand vous dites
tu dois mettre les ":" aussi dans les clés
c'est à dire comme ça
$var_manque = "1000110110111011101110100011001011011000111000110110111011101110100011001011011000111000110110111011101110100011001011011000111000110110111011101110100011001011011000111000110110111011101110100011001011011000111000110110111011101110100011";
$var_double = "0011001100101101010111001110111000001110001100110010110101011100111011100000111000110011001011010101110011101110000011100011001100101101010111001110111000001110001100110010110101011100111011100000111000110011001011010101110011101110000011";

$sql=('UPDATE :nv_table SET manque = :nv_double, double = :nv_manque WHERE id = :nv_id');
$req = $bdd->prepare($sql);
                        $req->execute(array(
                                ':nv_table' => $table,
                                ':nv_id' => $idMembre,
                                ':nv_manque' => $var_manque,
                                ':nv_double' => $var_double
                        ));
$bdd->errorInfo();

Re: faire un update de variables en pdo

par macgawel » 14 avr. 2010, 15:15

Bonjour.

La première chose à faire c'est, juste le temps de déboguer, utiliser $bdd->errorInfo().

Re: faire un update de variables en pdo

par stealth35 » 14 avr. 2010, 15:13

hello, normale ton array n'est pas bonne, tu dois mettre les ":" aussi dans les clés

faire un update de variables en pdo

par bertrandperrier » 14 avr. 2010, 15:07

Bonjour
je n'arrive pas a mettre à jour mes 2 variables dans ma base de donnée
je veut enregistrer $var_manque dans le champ manque et $var_double dans le champ double
ces 2 variables sont des chaines de caractère et non des chiffres
$var_manque = "1000110110111011101110100011001011011000111000110110111011101110100011001011011000111000110110111011101110100011001011011000111000110110111011101110100011001011011000111000110110111011101110100011001011011000111000110110111011101110100011";
$var_double = "0011001100101101010111001110111000001110001100110010110101011100111011100000111000110011001011010101110011101110000011100011001100101101010111001110111000001110001100110010110101011100111011100000111000110011001011010101110011101110000011";

$sql=('UPDATE :nv_table SET manque = :nv_double, double = :nv_manque WHERE id = :nv_id');
$req = $bdd->prepare($sql);
			$req->execute(array(
				'nv_table' => $table,
				'nv_id' => $idMembre,
				'nv_manque' => $var_manque,
				'nv_double' => $var_double
			));
Quand j'execute ce code, je n'est pas d'erreur, mais ma base de donnée ne change pas

d'avance merci