8800 sujets

Développement web côté serveur, CMS

Salut tout le monde,

Petite question :

J'aimerais échapper les apostrophes de mes chaines envoyées dans ce code :

$sql = 'UPDATE '.$_SESSION['LaTable'].' SET '.implode(",", $sqlset).' WHERE ID ='.$key ;



Je dois donc utiliser "addslashes" mais comment utiliser cette merveille avec implode ?

Merci d'avance.

beegees
Modifié par beegees (10 Nov 2008 - 20:46)
Salut.

array_walk peut répondre à ton besoin.

Autre remarque, tu pourrais tirer parti de la fonction sprintf pour un code plus lisible:

[code]$sql = sprintf('UPDATE %s SET %s WHERE ID = %d', $_SESSION['LaTable'], implode(",", $sqlset), $key);

Une dernière chose, essaye de donner le nom de tes champs dans la quête (surtout que j'ai l'impression que ceux-ci correspondent aux key du tableau). Cela t'évitera bien des tracas.
Calak a écrit :
Salut.

array_walk peut répondre à ton besoin.

Autre remarque, tu pourrais tirer parti de la fonction sprintf pour un code plus lisible:

[code]$sql = sprintf('UPDATE %s SET %s WHERE ID = %d', $_SESSION['LaTable'], implode(",", $sqlset), $key);

Une dernière chose, essaye de donner le nom de tes champs dans la quête (surtout que j'ai l'impression que ceux-ci correspondent aux key du tableau). Cela t'évitera bien des tracas.



Salut,

Un tout GRAND merci pour ta réponse.

Je vais analyser sprintf.

Pour ce qui est des noms des champs, je préfère utiliser des requêtes génériques, c'est pourquoi je ne met pas le nom de mes champs dans mes requêtes.

Niveau maintenance, ça aide.

Encore un tout grand merci à toi.

beegees
Si le nom de tes champs correspondent aux clés de ton tableau, tu peux tout à fait faire quelque chose de générique en utilisant array_keys pour récupérer le nom des champs.

C'est tout aussi générique, et encore plus ^^

Car sinon, tu risque de te retrouver face à quelques problèmes difficiles à dégugger.
Calak a écrit :
Si le nom de tes champs correspondent aux clés de ton tableau, tu peux tout à fait faire quelque chose de générique en utilisant array_keys pour récupérer le nom des champs.

C'est tout aussi générique, et encore plus ^^

Car sinon, tu risque de te retrouver face à quelques problèmes difficiles à dégugger.


Re,

Merci pour ta réponse et franchement, cet Array_Keys m'intéresse beaucoup.

J'espère ne pas en demander de trop Smiley confused mais saurais-tu me montrer à quoi ça ressemblerais un Array_Keys avec ma requête ?

Encore un grand merci à toi.

beegees
imaginons que $sqlset contient les valeurs à ajouter, et que les clés du tableau correspondent au nom des champs dans lequel enregistrer:

En fait, en y réfléchissant, il y a plus simple encore:

function buildUpdateValues ( array $arr ) {
    $output = array();
    foreach ($arr as $key => $value) {
        $output []= "`$key` = '". addslashes($value) ."'";   
    }
    return implode (', ', $output);
}
//...
$sql = sprintf('UPDATE %s SET %s WHERE ID = %d', $_SESSION['LaTable'], buildUpdateValues($sqlset), $key);
Un tout grand merci à toi Calak.

Je vais tester ta solution et l'analyser.

Encore merci pour tout.

beegees