nicod
(nicod_)
1
Bonjour,
j'ai l'impression que sql_insertq_multi() retourne null en cas d'erreur, et 0 en cas de succès, mais jamais false comme proposé dans son code :
function sql_insertq_multi($table, $couples=array(), $desc=array(), $serveur='', $option=true)
{
$f = sql_serveur('insertq_multi', $serveur, $option==='continue' OR $option===false);
if (!is_string($f) OR !$f) return false;
$r = $f($table, $couples, $desc, $serveur, $option!==false);
if ($r === false) spip_sql_erreur($serveur);
return $r;
}
Quelqu'un confirme ou infirme ?
nicod
(nicod_)
2
Même chose pour sql_insert, qui renvoie 0 en cas de succès et NULL en cas d'échec, alors que sql_update renvoie true ou false.
Les tests pour vérifier le bon fonctionnement d'une requête sont pas évidents du coup...
nicod
(nicod_)
3
Du coup, idem pour sql_insert que pour sql_insert_multi, spip_sql_erreur n'est jamais appelé et mysql.log n'est pas complet :
function sql_insertq($table, $couples=array(), $desc=array(), $serveur='', $option=true)
{
$f = sql_serveur('insertq', $serveur, $option==='continue' OR $option===false);
if (!is_string($f) OR !$f) return false;
$r = $f($table, $couples, $desc, $serveur, $option!==false);
if ($r === false) spip_sql_erreur($serveur);
return $r;
}
Et surtout, les codes de retours pour tester les erreurs sur des requetes critiques dans son propre code ne sont pas les même :
if( sql_update()===false )...
if( sql_insert()===null )...
Je fais un ticket sur core ?