[CRON] INSERT ON DUPLICATE KEY UPDATE

Messages postés
1660
Date d'inscription
dimanche 7 septembre 2008
Dernière intervention
11 septembre 2013
- - Dernière réponse : pierreSabatier
Messages postés
27
Date d'inscription
lundi 12 avril 2010
Dernière intervention
15 octobre 2011
- 15 oct. 2011 à 15:38
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

http://codes-sources.commentcamarche.net/source/53678-cron-insert-on-duplicate-key-update

Afficher la suite 
cod57
Messages postés
1660
Date d'inscription
dimanche 7 septembre 2008
Dernière intervention
11 septembre 2013
12 -
bonjour

/*Bonjour je crois qu'il y a problème de sécurité dans une fonction*/
/*http://www.phpsecure.info/v2/article/InjSql.php*/
/*le tableau $data doit etre ecrasé*/
/* mon test */
/*on suppose connecté*/
$link = mysql_connect('localhost','root','');
$Q new SegmenterRequete('INSERT INTO T (pop, top) VALUES ', ' ON DUPLICATE KEY UPDATE SET pop VALUES(pop);');
$Q->mode = Mode::DEBUG_ALL;
$Q->max = 2;

$Q->ajouter('lol\'', 'mom');
echo '
';
$Q->ajouter('lol', 'mom');
echo '
';
$Q->concatener("('lol','')");

/*mon test*/
$data=array("INSERT INTO membres (login,password,nom,email,userlevel) VALUES ('','','','','3')#','1");
print_r($Q->ajouter_tableau($data));
/*fin test*/

//array_map('mysql_real_escape_string', $data);
//mais $data = array_map('mysql_real_escape_string', $data);
//j'ai mis le return pour le test

//public function ajouter_tableau($data){
//
// $data=array_map('mysql_real_escape_string', $data)
// return $chaine = '(' . $this->guillemet . implode($this->guillemet . ', ' . $this->guillemet, $data) .
// $this->guillemet . ')';

?>
pierreSabatier
Messages postés
27
Date d'inscription
lundi 12 avril 2010
Dernière intervention
15 octobre 2011
-
Merci COD57. Effectivement, je m'étais mal renseigné sur la fonction "array_map", j'avais pensé à un passage par référence :p

Maintenant le code est sûr.

Mais attention COD57. Je crois que tu n'as pas bien compris comment utiliser cette classe. La méthode SegmeterRequete::ajouter_tableau prend en paramètre un tableau de valeurs à ajouter, et seulement les valeurs, pas la structure de la requête. Celle-ci est définie par les attributs SegmenterRequete::$debut et SegmenterRequete::$fin.
cod57
Messages postés
1660
Date d'inscription
dimanche 7 septembre 2008
Dernière intervention
11 septembre 2013
12 -
Si j'ai compris ce que tu veux faire avec cette class, mon exemple n'étais que pour mettre en évidence le non filtrage ... bon ... pour ce qui est vraiment utile ton code est intéressant, il faudra que je teste ça sur un gros update. Il y a des astuces très ingénieuses.

++
pierreSabatier
Messages postés
27
Date d'inscription
lundi 12 avril 2010
Dernière intervention
15 octobre 2011
-
Merci COD57 :-) En affectant l'attribut SegmenterRequete::$mode à Mode::DEBUG_ONE, la première requête est affichée. Ca peut être rassurant de voir le résultat avant le gros update ;-)
Commenter la réponse de cod57

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.