2012-04-08 16 views
0

私はとても混乱しています。LIMITのMySQLは動作しません

function fetchAllArray($assoc = MYSQL_ASSOC) { 
    while($rows=$this->result->fetch_array($assoc)) 
     $arr[]=$rows; 
    return $arr; 

} 

function getGalleries($limit = 0,$orderby = '`created` ASC, sort_id',$ordersort = 'DESC') { 

    $this->query("SELECT * FROM galleries WHERE status=1 ORDER BY ".$orderby." ".$ordersort." ".($limit==0 ? "" : " LIMIT ".$limit).";"); 
    $arr=$this->fetchAllArray(); 

    if(is_array($arr)) 
     return $arr; 
    else 
     return FALSE; 
} 

が、私はそれを呼び出すときに好き:私はこのコードを持って、これは何も返さない

$this->getGalleries(300); 

私はphpmyadminで正確なクエリをテストすると結果が得られます。クエリからLIMITを削除すると機能します。なぜLIMITはここで動作しないのですか?

LIMITではlocalhostではうまく機能していますが、サーバーでは機能しないコードです!

EDIT: これはサーバー上で動作しない「作成済み」の文字列です。クエリからcreatedを削除すると、それはサーバ上で動作しますが、私はそれが動作しないときにインクルードします!どのように私は私のクエリでこれを追加!

+0

...クエリがうまくかないで構成されているかどうかを、クエリの実行前にprint文を入れて試してみてください –

+0

$ arrの長さをテストして、何がうまくいかないかを調べることができます。 – sarwar026

+0

神のお母さん!私はちょうどこれがサーバー上で動作していない '作成された'文字列であることを発見しました!クエリで 'created 'を削除すると、サーバ上で動作します。私はどのようにこれをクエリに追加しますか? – m3hdi

答えて

1

これはおそらくあなたのPHPコードではなく、クエリではエラーです。実際にあなたの関数は、パラメータを取得し、ゼロであるデフォルト引数を取らないようだので、あなたがどんな結果を得ることはありません

set global general_log = 1; 
+0

私は間違いがない。 localhostでうまく動作するクエリ – m3hdi

2

を送る何のphp参照するにはgeneral_log上

電源を入れます。

実行されますと予期した結果を返さない正確なクエリは何ですか?

+0

Iプリントアウトコマンドを受け取ったとき:SELECT * ギャラリーから STATUS = 1 ORDER BYで作成されたASC、sort_id DESC LIMIT 300; – m3hdi

+1

この方法で制限を変更してみてください:LIMIT 0,300 – aleroot

+0

私はLIMITが問題ではないが、 'created'という文字列が見つかりました!それを削除すると、サーバー上で動作します。サーバー側のmysqlバージョンが列名として 'created'を受け入れていないようです! – m3hdi

関連する問題