我有这段php - mysql代码:
如果用户在我的数据库中标记为女性,则会向数据库查询数据为1012,1013,1014但仅为1012,1013的数据。
// $php_variable=2
$SQL_M = "SELECT @gender:=$php_variable, B.id, B.notes, B.time_logged
FROM database.evs B
INNER JOIN (select @gender:=0) as Something
WHERE
CASE WHEN @gender=2
THEN (B.items IN ('1012', '1013', '1014'))
ELSE (B.items IN ('1012', '1013'))
END
ORDER BY B.time_logged ASC";
$result = mysql_query($SQL_M);
$mycount = mysql_num_rows($result);
if ($mycount > 0) {
while ($mrow = mysql_fetch_array($result))
{
extract($mrow);
echo ">>>>".$id."<br/>"
//Works locally - not on server.
}
}
$ php_variable是2.
应输出项目编号为1012,1013,1014的项目 相反,它输出1012,1013中项目的结果。
奇怪的是我在本地测试了这个查询(仅从php和mysql查询) 并在服务器上(Plesk - Mysql),它运行得很好。
它不会在服务器的php文件中运行 - 因此ORDER无法正常运行。
应执行的查询是:
$SQL_M = "SELECT B.id, B.notes, B.time_logged
FROM database.evs B
WHERE B.items IN ('1012', '1013', '1014')
ORDER BY B.time_logged ASC";
Php版本:5.16 (本地和服务器)
MySQL版本:5.0.77 (本地和服务器)
提前感谢您的帮助。
答案 0 :(得分:2)
我会这样做:
$SQL_M = "SELECT B.id, B.notes, B.time_logged FROM database.evs B";
if ($php_variable == 2)
{
$SQL_M .= " WHERE B.items IN ('1012', '1013', '1014')";
}
else
{
$SQL_M .= " WHERE B.items IN ('1012', '1013')";
}
$SQL_M .= " ORDER BY B.time_logged ASC";
这可以写得更简单,但这只是为了表明一般的想法。