根据用户输入动态查询sql [关闭]

How can I select * from users where gender = ?; and have gender to be equal either 'f' or 'm' or either?

I am trying to create a dynamic select statement where I would be able to get back

  1. all users that are male
  2. all users that are female
  3. all users that are either

I am able to do it with the first two but not the third. Will it possible with mysql?

I 'll assume you are using PDO and prepared statements:

$pdo = new PDO($dsn, $user, $pass, $options);

$gender_defined = $gender == 'f' || $gender == 'm';

if ($gender_defined) {
  $query = $pdo->prepare("select * from table where gender = ?");
  $query->bindParam(1, $gender, PDO::PARAM_STR);
  $query->execute();
} else {
  $query = $pdo->query("select * from table where gender = 'f' or gender = 'm'");
}

$result = $query->fetchAll(PDO::FETCH_ASSOC);