Juste une note si quelqu'un rencontre des problèmes similaires :
J'ai eu un problème similaire --- Insérer une requête fonctionnant sur PHPMyAdmin mais ne fonctionnant pas sur PHP et ne produisant aucune erreur (le résultat était true tout le temps).
La raison est que je commençais une transaction mais que j'oubliais de la valider...
$mysqli->autocommit(FALSE);
$mysqli->query( "START TRANSACTION" );
N'oubliez jamais ceci :
$mysqli->commit();
C'est une erreur stupide, je sais, mais j'étais tellement concentré sur le mystère de la requête que j'ai oublié les déclarations de transaction quelques lignes plus haut.