update capricieux

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 : update capricieux

par Invité » 09 janv. 2008, 12:18

ben il n'y a que ça dans le code, des update en boucle avec un test sur la valeur des variables:
case "champ" :
if ($row[1] == "descr")
{
$sql = "UPDATE f_fields SET descr = '" . mysql_real_escape_string(${$key}) . "' WHERE id = " . $row[2];
$result = mysql_query($sql) or die (mysql_error());
echo $sql . "<br/><br/>";
}	
			
le echo $sql m'indique que toutes les variables sont bien définies.
Ce que je peux ajouter, c'est que la requete fonctionne bien quand la valeur à insérer dans le champ 'descr' ne contient pas d'apostrophe.

par Nagol » 09 janv. 2008, 12:14

sans vouloir paraitre ennuyant je crois qu'il faudrait être devin pour répondre quelquechose de sensé :)

il va nous falloir un peu plus d'information pour t'aider essayes de poster une version pas trop grosse de la page complète par exemple.

Sinon n'oublie pas que si tu n'as pas d'erreur retournée c'est peut-être tout simplement parceque le moteur sql ne rencontre pas d'erreur de parsing en raison du comportement de tes variables auquel cas il s'agirait d'une erreur de conception plus qu'une erreur de coding.

dans les deux cas poste nous une version plus complète de ton script pour mieux visualiser :)

update capricieux

par Invité » 09 janv. 2008, 12:08

Bonjour,

voici ma table

Code : Tout sélectionner

CREATE TABLE `f_fields` ( `id` int(10) NOT NULL auto_increment, `sectionid` int(10) NOT NULL default '0', `type` varchar(255) collate latin1_general_ci NOT NULL default '', `descr` varchar(255) collate latin1_general_ci NOT NULL default '', `nomvar` varchar(255) collate latin1_general_ci NOT NULL default '', `valdefaut` varchar(255) collate latin1_general_ci NOT NULL default '', `oblig` tinyint(1) NOT NULL default '0', `ctrl` varchar(255) collate latin1_general_ci NOT NULL default '', `jsevent` varchar(255) collate latin1_general_ci NOT NULL default '', `ordre` int(10) NOT NULL default '0', `published` char(1) collate latin1_general_ci NOT NULL default '', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=80 ;
J'ai un update qui fonctionne bien si j'execute dans phpmyadmin:
UPDATE f_fields SET descr = 'Adressex de facturation si différente de l\'adresse principale' WHERE id = 8
Cette meme requete ne fonctionne pas (pas d'erreur retournée) quand je l'execute depuis php
$sql = "UPDATE f_fields SET descr = '" . mysql_real_escape_string(${$key}) . "' WHERE id = " . $row[2];
$result = mysql_query($sql) or die (mysql_error());
Voyez vous pourquoi le test 2 ne fonctionne pas?
Je précise que la requete du test 1 est le copier/coller dans phpmyadmin d'un echo ($sql) du test 2.

Merci pour vos réponses.