2012-03-29 19 views
0

以内に動作しません。他の1012,1013,1012,1013,1014のみ。MySQLのクエリは、私はPHPのこの作品を持っているPHPファイル

// $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が、それはアイテムIDと出力項目をすべき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

なぜあなたは条件でPHPでクエリを構築しないのですか?これは不必要に複雑に思える。 – jeroen

+0

私が与えた例に基づいて、私はあなたに同意します。実際にははるかに複雑ですが、この単純な例はうまくいきません。私はその理由を見つけようとしています... –

+1

echo $ SQL_Mを試してみて、mysqlコマンドライン/ phpmyadminから実行してください $ SQL_Mとは何ですか? –

答えて

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、私は最終的にそれを行いますが、私はまた、この動作の原因を見つける必要があります。何か案は? –

+0

@Kabamaruいいえ、私は恐れます(またはラッキーです...)私はそのようなSQL文を構築する経験はありません。 – jeroen

+1

ご協力いただきありがとうございます。私はいつか答えを見つけて、運が私と一緒にあることを願っています:) –

関連する問題