我有一个从数据库中选择男性,女性或性别的函数。
功能如下:
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);
}
?>