次のコードで null パラメーターをバインドするのに問題があります
$nullVariable = NULL;
$sql = new PDO('mysql:host=' . $Server, $User, $Password);
$sql->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$statement = $sql->prepare("SELECT * FROM Table WHERE Binary16Column = :uuid");
$statement->bindParam(":uuid", $nullVariable, PDO::PARAM_NULL);
$statement->execute();
$results = $statement->fetchAll(PDO::FETCH_ASSOC);
結果変数は空の配列になります。パラメータを使用せず、クエリを「WHERE Binary16Column IS NULL」に変更すると、予想される行数が返されます。したがって、問題は、SQL クエリではなく、パラメーターの処理方法にあるはずです。
私のコードは上記よりも複雑で、null の可能性があるパラメーター変数を使用できるようにする必要があるため、変数が null であることを確認して別のクエリを実行することは理想的ではありません。技術的には、パラメーターを設定するための独自の関数があります。これは、変数の内容が null であるかどうかを確認し、パラメーターを適切にバインドする場所であるため、不要な数のクエリを記述する必要はありません。変数に有効なデータが含まれていて、パラメーターの型が PARAM_LOB の場合、クエリは正常に機能します。
誰かが私が間違っていることを知っていますか? どうもありがとう!