MySQL查询在PHP文件中不起作用

时间:2012-03-29 00:54:55

标签: php mysql

我有这段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 (本地和服务器)

提前感谢您的帮助。

1 个答案:

答案 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";

这可以写得更简单,但这只是为了表明一般的想法。