$stmt = $dbh->prepare('SELECT id, name FROM folders WHERE parent_folder_id = :id');
$stmt->bindValue(':id', $folder_id, PDO::PARAM_INT);
Tengo el código anterior. Si una carpeta tiene un parent_folder_id, significa que está dentro de otra carpeta. Si esta columna es NULL, significa que es una carpeta raíz.¿Cómo enlazar un valor si quiero que acepte tanto INT como NULL con PDO?
Desde mi entender, si $ folder_id es NULL entonces la tratará como 0 (por lo que no da resultados positivos con el código, ya que se debe a que el valor de esa columna es NULL y no es 0). Si cambio el tercer argumento a PDO :: PARAM_NULL, sigo sin obtener ningún resultado. Creo que esto se debe a que evalúa la consulta como "WHERE parent_folder_id = NULL" que no es igual a "WHERE parent_folder_id es NULL".
¿Hay alguna manera de que PDO trate esto correctamente o debería crear mi instrucción SQL con un en línea si cambiar el "=" con "es" y cambiar el tercer parámetro bindValue por el correcto?
¡Gracias! Esto hizo el truco y tú también me enseñaste algo, nunca antes había usado <=> (sí, un poco para la fiesta, ¿eh?). Me salvará un montón de dolores de cabeza en el futuro, eso es seguro :) – Gazillion