Je crée une recherche utilisateur dans laquelle un utilisateur peut rechercher d'autres utilisateurs en fonction du nom d'utilisateur, de la langue et/ou de l'emplacement. Au moins un champ est requis. Par exemple, vous pouvez rechercher uniquement le nom d'utilisateur, le nom d'utilisateur et l'emplacement.Création d'une requête MYSQL avec plusieurs champs de recherche facultatifs
J'ai des difficultés à écrire une requête MYSQL qui prend en compte le fait que certains paramètres peuvent être vides. Je l'ai essayé d'utiliser un maximum de deux paramaters au moment:
PHP/MYSQL (AOP)
$data = json_decode(file_get_contents("php://input"));
$user = $data->user; //'null' if left blank
$location = $data->location; //'null' if left blank
$sql = "SELECT user, spokenLanguages, profileImage
FROM users WHERE user LIKE :user
AND (town = LOWER(:location) OR country = LOWER(:location))";
Cela fonctionne parfaitement si l'utilisateur $ et l'emplacement de $ sont définis, mais je ne ai besoin de l'endroit où clause incluse si $ user est défini et $ location n'est pas égal à null
. De même, si $ location est défini et $ user est null
, la clause utilisateur ne doit pas être prise en compte. Y at-il une méthode rapide de faire cela que je ne connais pas? Ou sera-ce un cas d'extension de la requête avec une instruction if/else?
Toute aide sera appréciée.
[Comment créer une clause WHERE pour PDO dynamique] (https://phpdelusions.net/pdo_examples/dynamical_where –