2012-03-29 116 views
0

我有这一块的PHP - MySQL代码:
MySQL查询不PHP文件中工作

当标签在我的数据库作为一个女人在用户打开它查询一些数据和数字数据库页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

它应与项目ID输出项中: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

为什么不根据条件在php中建立查询?这似乎是不必要的复杂。 – jeroen 2012-03-29 01:03:04

+0

基于我给出的例子,我同意你的看法。事实上,它更复杂,但这个简单的例子不起作用。我试图找到原因... – 2012-03-29 01:06:53

+1

尝试echo $ SQL_M并从mysql命令行执行它/ phpmyadmin 什么是$ SQL_M真实内容? – 2012-03-29 01:08:41

回答

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

这可以写成简单一些,但这只是为了显示的总体思路。

+0

谢谢jeroen,我最终会这样做,但我也需要找出导致此行为的原因。有任何想法吗? – 2012-03-29 01:15:21

+0

@Kabamaru不,我很害怕(或者幸运......)我没有任何建立这样的SQL语句的经验。 – jeroen 2012-03-29 01:20:28

+1

谢谢大家的帮助。我希望有一天我会找到答案,也许运气与我同样:) – 2012-03-29 01:24:06