Le standard SQL précise qu'une chaîne avec apostrophe se code avec une double apostrophe et non un \ ce que SQLite fait aussi, contrairement à MySQL et PG.
En prévision des portages utilisant cette réprésentation, l'interface s'enrichit de la fonction {{{sql_quote}}}, qui s'ajoute à celles définies dans [10707] [10667], [10433], [10131], [10146], [10154] et [10113]
{{{
quote => fonction d'abstraction de la citation d'une constante SQL
}}}
Pour MySQL et PG, cette fonction est donc équivalente à {{{_q()}}} qui reste disponible, mais doit être considérée comme obsolète. Le présent dépôt a été obtenu par le script ci-dessous, dont on peut faire usage pour ses extensions personnelles:
{{{
for i in $(grep -l '_q(' [bigpeau]*/*p)
do
sed 's/_q(/sql_quote(/g' $i > x
mv x $i
done
}}}
Un ajustement manuel a été nécessaire pour le critère "=", le compilateur testant si le code qu'il a produit contient la fonction de citation.
. ($arg ? " AND documents.id_document=".intval($arg): '');
$s = sql_select("documents.id_document, documents.titre, documents.descriptif, documents.distant, documents.fichier, types.mime_type", "spip_documents AS documents LEFT JOIN spip_types_documents AS types ON documents.extension=types.extension",$where);
// "Voir en ligne" si l'auteur a un article publie
$n = sql_countsel('spip_auteurs_articles AS lien, spip_articles AS articles', "lien.id_auteur="._q($id)." AND lien.id_article=articles.id_article AND articles.statut='publie'");
$n = sql_countsel('spip_auteurs_articles AS lien, spip_articles AS articles', "lien.id_auteur=".sql_quote($id)." AND lien.id_article=articles.id_article AND articles.statut='publie'");
@ -188,7 +188,7 @@ function init_body($rubrique='accueil', $sous_rubrique='accueil', $id_rubrique='
// http://doc.spip.org/@avertissement_messagerie
function avertissement_messagerie($id_auteur) {
$result_messages = sql_select("lien.id_message", "spip_messages AS messages, spip_auteurs_messages AS lien", "lien.id_auteur="._q($id_auteur)." AND vu='non' AND statut='publie' AND type='normal' AND lien.id_message=messages.id_message");
$result_messages = sql_select("lien.id_message", "spip_messages AS messages, spip_auteurs_messages AS lien", "lien.id_auteur=".sql_quote($id_auteur)." AND vu='non' AND statut='publie' AND type='normal' AND lien.id_message=messages.id_message");
@ -206,14 +206,14 @@ function afficher_documents_colonne($id, $type="article",$script=NULL) {
. '</div><br/>';
//// Documents associes
$res = sql_select("docs.id_document", "spip_documents AS docs, spip_documents_".$type."s AS l", "l.id_".$type."=" ._q($id) . " AND l.id_document=docs.id_document AND docs.mode='document'", "", "docs.id_document");
$res = sql_select("docs.id_document", "spip_documents AS docs, spip_documents_".$type."s AS l", "l.id_".$type."=" .sql_quote($id) . " AND l.id_document=docs.id_document AND docs.mode='document'", "", "docs.id_document");
$documents_lies = array();
while ($row = sql_fetch($res))
$documents_lies[]= $row['id_document'];
//// Images sans documents
$images_liees = sql_select("docs.id_document", "spip_documents AS docs, spip_documents_".$type."s AS l "."", "l.id_".$type."=" . _q($id) . " AND l.id_document=docs.id_document AND docs.mode='image'", "", "docs.id_document");
$images_liees = sql_select("docs.id_document", "spip_documents AS docs, spip_documents_".$type."s AS l "."", "l.id_".$type."=" . sql_quote($id) . " AND l.id_document=docs.id_document AND docs.mode='image'", "", "docs.id_document");
$ret .= "\n<divid='liste_images'>";
while ($doc = sql_fetch($images_liees)) {
@ -303,7 +303,7 @@ function afficher_case_document($id_document, $id, $script, $type, $deplier=fals
$prim = 'id_' . $type;
charger_generer_url();
$res = sql_select("docs.id_document, docs.id_vignette,docs.extension,docs.titre,docs.descriptif,docs.fichier,docs.largeur,docs.hauteur,docs.taille,docs.mode,docs.distant, docs.date, L.vu", "spip_documents AS docs JOIN $table AS L ON L.id_document=docs.id_document", "L.$prim="._q($id)." AND L.id_document="._q($id_document));
$res = sql_select("docs.id_document, docs.id_vignette,docs.extension,docs.titre,docs.descriptif,docs.fichier,docs.largeur,docs.hauteur,docs.taille,docs.mode,docs.distant, docs.date, L.vu", "spip_documents AS docs JOIN $table AS L ON L.id_document=docs.id_document", "L.$prim=".sql_quote($id)." AND L.id_document=".sql_quote($id_document));
@ -257,7 +257,7 @@ function notifications_forumvalide_dist($quoi, $id_forum) {
// pas le droit de le moderer (les autres l'ont recu plus tot)
if ($t['id_article']
AND $GLOBALS['meta']['prevenir_auteurs'] == 'oui') {
$result = sql_select("auteurs.id_auteur, auteurs.email", "spip_auteurs AS auteurs, spip_auteurs_articles AS lien", "lien.id_article="._q($t['id_article'])." AND auteurs.id_auteur=lien.id_auteur");
$result = sql_select("auteurs.id_auteur, auteurs.email", "spip_auteurs AS auteurs, spip_auteurs_articles AS lien", "lien.id_article=".sql_quote($t['id_article'])." AND auteurs.id_auteur=lien.id_auteur");
while ($qui = sql_fetch($result)) {
if (!autoriser('modererforum', 'article', $t['id_article'], $qui['id_auteur']))
@ -293,7 +293,7 @@ function notifications_forumvalide_dist($quoi, $id_forum) {
@ -310,7 +310,7 @@ function notifications_forumposte_dist($quoi, $id_forum) {
// avertis par la notifications_forumvalide).
if ($t['id_article']
AND $GLOBALS['meta']['prevenir_auteurs'] == 'oui') {
$result = sql_select("auteurs.id_auteur, auteurs.email", "spip_auteurs AS auteurs, spip_auteurs_articles AS lien", "lien.id_article="._q($t['id_article'])." AND auteurs.id_auteur=lien.id_auteur");
$result = sql_select("auteurs.id_auteur, auteurs.email", "spip_auteurs AS auteurs, spip_auteurs_articles AS lien", "lien.id_article=".sql