Stockage de vraies valeurs NULL dans les instructions préparées MySQLi
Dans une instruction préparée dans MySQLi, le comportement par défaut d'une valeur NULL est de la convertir à une chaîne vide ('') dans le cas d'une chaîne ou à 0 dans le cas d'un entier. Cependant, si vous préférez conserver la valeur NULL, vous pouvez adopter une approche spécifique.
Utilisation de l'opérateur MySQL NULL Safe
Pour stocker un vrai NULL dans une instruction préparée par MySQLi, vous devez utiliser l'opérateur sécurisé MySQL NULL :
<=>
Cet opérateur garantit qu'une colonne est comparée pour l'égalité ou la non-égalité à NULL. Par exemple :
$price = NULL; // Note: Using php NULL without quotes
$stmt = $mysqli->prepare("SELECT id FROM product WHERE price <=> ?"); // Selects products with NULL prices
$stmt->bind_param($price);
Dans cet exemple, la requête récupérera les produits dont la colonne prix est NULL. Sans l'opérateur de sécurité NULL, la requête n'aurait renvoyé aucun résultat, car NULL n'est pas égal à une chaîne vide ou à 0.
Exemple
Le code PHP suivant démontre comment utiliser l'opérateur de sécurité NULL dans une instruction préparée :
$firstName = NULL;
$lastName = "Doe";
$stmt = $mysqli->prepare("UPDATE users SET first_name <=> ?, last_name = ?");
$stmt->bind_param("ss", $firstName, $lastName);
$stmt->execute();
Cette requête mettrait à jour l'utilisateur avec le nom de famille spécifié et conserverait la valeur NULL pour le prénom.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!