MySQLi プリペアド ステートメントへの真の NULL 値の保存
MySQLi 内のプリペアド ステートメントでは、NULL 値のデフォルトの動作は変換します。文字列の場合は空の文字列 ('')、整数の場合は 0 に変換されます。ただし、NULL 値を保持したい場合は、特定のアプローチを使用できます。
MySQL NULL Safe Operator の使用
真の NULL を格納するにはMySQLi プリペアド ステートメントの場合は、MySQL NULL セーフ演算子を使用する必要があります。
<=>
この演算子は、カラムが NULL と等しいかどうかが比較されることを保証します。例:
$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);
この例では、クエリは価格列が NULL である製品を取得します。 NULL セーフ演算子がないと、NULL は空の文字列または 0 に等しくないため、クエリは結果を返しません。
例
次の PHP コードは、次のことを示します。準備されたステートメントで NULL セーフ演算子を使用する方法:
$firstName = NULL;
$lastName = "Doe";
$stmt = $mysqli->prepare("UPDATE users SET first_name <=> ?, last_name = ?");
$stmt->bind_param("ss", $firstName, $lastName);
$stmt->execute();
このクエリは、指定された姓でユーザーを更新し、名の NULL 値を保持します。
以上がMySQLi プリペアド ステートメントに真の NULL 値を保存するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。