Skip to content
Extraits de code Groupes Projets
Valider d257a795 rédigé par marcimat's avatar marcimat
Parcourir les fichiers

PHP 8.1 #4968 : Deprecated-- sur spip_mysql_cite() si valeur null;

Le comportement de `sql_quote(null)` est potentiellement problématique.
Il se comporte comme auparavant, c’est à dire tel que `sql_quote('')`.

Il serait plus logique de retourner le vrai terme `NULL` pour Mysql ;
c’est d’ailleurs ce qui est fait lorsqu’on indique le type de champ
tel que `sql_quote(null, 'int')`.

Par contre, si le type explicite `not null` tel que dans `sql_quote(null, 'int NOT NULL')`,
alors ça retourne "''" car l’on sait que NULL ne peut être présent dans la colonne.

Cependant, toute opération de comparaison avec `NULL` en mysql retourne `NULL`
(cf: https://dev.mysql.com/doc/refman/8.0/en/working-with-null.html).
Donc si une personne voulait effecivement comparer avec null, il faut utiliser `IS NULL` ou `IS NOT NULL`
ce que ne sera pas fait avec `'texte = ' . sql_quote(null, 'string')`.
parent 6aa0f802
Branches
Étiquettes
Aucune requête de fusion associée trouvée
......@@ -1661,24 +1661,24 @@ function spip_mysql_cite($v, $type) {
if (!$type) {
if (is_bool($v)) {
return strval(intval($v));
}
elseif (is_numeric($v)) {
} elseif (is_numeric($v)) {
return strval($v);
} elseif ($v === null) {
return "''";
}
return "'" . addslashes($v) . "'";
}
if (
is_null($v)
and stripos($type, 'NOT NULL') === false
) {
// null php se traduit en NULL SQL
return 'NULL';
}
if (sql_test_date($type) and preg_match('/^\w+\(/', $v)) {
if ($v === null) {
if (stripos($type, 'NOT NULL') === false) {
// null php se traduit en NULL SQL
return 'NULL';
} else {
return "''";
}
} elseif (sql_test_date($type) and preg_match('/^\w+\(/', $v)) {
return $v;
}
if (sql_test_int($type)) {
} elseif (sql_test_int($type)) {
if (
is_numeric($v)
or ($v and ctype_xdigit(substr($v, 2)) and $v[0] === '0' and $v[1] === 'x')
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter