La fonction
sql_update()
met à jour un ou des enregistrements dans une table SQL. Les éléments transmis ne sont pas protégés automatiquement comme avec
sql_updateq()
, il faut dont faire attention aux injections SQL et utiliser les fonctions
sql_quote()
pour protéger les contenus quand cela est nécessaire.
La fonction admet 6 paramètres :
-#
$table
est la table SQL utilisée,
-#
$exp
contient les modifications à réaliser,
-#
$where
,
-#
$desc
,
-#
$serveur
,
-#
$option
.
Cette fonction est utilisée principalement pour modifier des valeurs en utilisant la valeur même d’une colonne, tel que :
// ajoute 1 a la colonne
sql_update('table', array('colonne' => 'colonne + 1'));
Lorsque des données ajoutées avec cette fonction sont susceptibles d’avoir des apostrophes ou proviennent de saisies utilisateur, il est important de protéger l’insertion avec
sql_quote()
:
sql_update('table', array('colonne' => sql_quote($valeur)));
Exemple
Actualiser la colonne « id_secteur » avec l’identifiant des rubriques n’ayant pas de parent :
// fixer les id_secteur des rubriques racines
sql_update('spip_rubriques', array('id_secteur'=>'id_rubrique'), "id_parent=0");
Ajouter un nombre identique de visites aux statistiques de certains articles :
$tous = sql_in('id_article', $liste);
sql_update('spip_visites_articles',
array('visites' => "visites+$n"),
"date='$date' AND $tous");