我有一个从数据库中选择男性,女性或性别的函数。

功能如下:

function getMembers($sex = null) {

    if (is_null($sex)) {
        $sex = (0 || 1);
    }

    $query = $conn->prepare("SELECT username FROM users WHERE sex = :sex");
    $query->execute(array(
        ':sex' => $sex
    ));

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


我这样称呼查询:

getMembers(0); (拿来的女孩很好)

getMembers(1); (拿到家伙很好)

getMembers(); (仅获取男生)

我相信$ sex =(0 || 1);行是错误的。

您将如何解决?
谢谢

附:我的查询实际上看起来像:

    $query = $conn->prepare("SELECT picture_path, profile_picture, username, last_visit, signup_date, settings, sex FROM tusers
                WHERE profile_picture IS NOT NULL
                AND settings LIKE '1,%'
                AND sex = :sex
                AND  last_visit BETWEEN CURDATE() - INTERVAL 9 DAY AND CURDATE()
                AND signup_date < CURDATE() - INTERVAL 10 DAY
                ORDER BY RAND()
                LIMIT 15");

最佳答案

这不是最佳解决方案,但您应该明白这一点。

(实际上,将查询字符串分成几部分会更实际-通过if / loop / whatever将任何所需的列,值,位置和绑定混合在一起。)

<?php

function getMembers($sex = null) {

    if (is_null($sex)) {
      $query = $conn->prepare("SELECT username FROM users;");
      $query->execute();
    }
    else {
      $query = $conn->prepare("SELECT username FROM users WHERE sex = :sex;");
      $query->execute(array(':sex' => $sex));
    }
    $members_results = $query->fetchAll(PDO::FETCH_ASSOC);
}

?>

09-25 16:09