Как связать значение, если я хочу, чтобы оно принимало как INT, так и NULL с PDO?

$stmt = $dbh->prepare( 'SELECT id, name FROM folders WHERE parent_folder_id = :id' );
$stmt->bindValue( ':id', $folder_id, PDO::PARAM_INT );

У меня есть приведенный выше код. Если у папки есть parent_folder_id, это означает, что она находится внутри другой папки. Если этот столбец имеет значение ПУСТО (NULL), это означает, что это корневая папка.

Насколько я понимаю, если $ folder_id имеет значение ПУСТО (NULL), то он будет рассматривать его как 0 (поэтому я не получаю результатов с кодом, как он есть, потому что значение в этом столбец NULL, а не 0). Если я изменю третий аргумент на PDO :: PARAM_NULL, я все равно не получу результатов. Я считаю, что это связано с тем, что он оценивает запрос как «WHERE parent_folder_id = NULL», который не совпадает с «WHERE parent_folder_id is NULL».

Есть ли способ, чтобы PDO обрабатывал это правильно, или я должен создать свой SQL со встроенным выражением if заменить "=" на "is" и заменить третий параметр bindValue на правильный?

7
задан Gazillion 16 August 2011 в 17:31
поделиться