アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記の実行すると、エラーが表示され
LIMIT 0,50を外すとエラーにはならず、結果が表示されます。
ただ、一度に全件が表示されるのでLIMITで表示させる件数を制御したいと思っていますが、
なぜかエラーになっています。どこが間違っているのでしょうか?

$query = "select *
from
tableA ta left join tableB tb on ta.id = tb.id
left join tableC tc cf on tb.id = tc.id
left join tableD td on tb.id = td.id
where tb.aaa != ''";

$xdays = (isset($days) and $days !== "")?$days:null;
$xmn =(isset($mn) and $mn !== "")?$mn:null;
$xfp =(isset($fp) and $fp !== "")?$fp:null;
$xre =(isset($re) and $re !== "")?$re:null;

if(is_null($xdays) and is_null($xmn) and is_null($xfp) and is_null($xre)){
$query .= " and 0";
}else{
if(!is_null($xdays))$query .=" and tb.day='" .$xdays ."'";
if(!is_null($xmn))$query .=" and tb.mn = '" .$xmn ."'";
if(!is_null($xfp))$query .=" and tb.fp='" .$xfp ."'";
if(!is_null($xre))$query .=" and tb.re='" .$xre ."'";
}

$query .=" order by tb.day DESC,tb.jikan limit 0,50;

エラー:
empty: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and tb.fp='4'' at line 20


以前の質問
https://oshiete.goo.ne.jp/qa/9061230.html
を参考に、修正している状況で、LIMITのエラー?になって困っています。

質問者からの補足コメント

  • 補足します。

    $queryをprintすると、
    -------
    select *
    from tableA ta left join tableB tb on ta.id = tb.id
    left join tableC tc cf on tb.id = tc.id
    left join tableD td on tb.id = td.id
    where tb.aaa != '' and db.fp='4' ORDER BY tb.day DESC , tb.jikan LIMIT 0 , 50
    -----

    上記のように表示され、phpmyadmin上にコピペすると問題なく結果がでますが

    サイト上で行うと、本文のエラーとなります。

      補足日時:2016/04/12 15:17

A 回答 (3件)

if(!is_null($xdays))$query .=" and tb.day='" .$xdays ."'\n";


if(!is_null($xmn))$query .=" and tb.mn = '" .$xmn ."'\n";
if(!is_null($xfp))$query .=" and tb.fp='" .$xfp ."'\n";
if(!is_null($xre))$query .=" and tb.re='" .$xre ."'\n";
$query .=" order by tb.day DESC,tb.jikan\n";
$query .=" limit 0,50";


など、条件を行にわけると、エラーの箇所をより細かく限定できるかもしれません
具体的なエラー行数が表示されるので
    • good
    • 0
この回答へのお礼

有難うございます。
条件を行に分けて、実行したところ、エラーのlineが常にLIMIT 0,50のラインに来ていることが確認できました。
サーバの関係で使えないとかあるのでしょうか??

お礼日時:2016/04/13 16:51

>上記のように表示され、phpmyadmin上にコピペすると問題なく結果がでますが



#1でも書きましたタイプミス、転記ミスない?
cfってなに?db.fpってなに?
    • good
    • 0
この回答へのお礼

すいません。cf,db.fpはここに書き込み編集ミスしていました
実際には不明なものはないように思います。
LIMIT 0,50を外すだけで、正常に動くのも不思議でなりません。

お礼日時:2016/04/12 15:37

>'and tb.fp='4''


のあたりでエラーが出ているのLimit句以前の問題では?
print $queryしてみればSQL文全体で文法エラーの箇所が検証できるでしょう
たとえば半角スペースが全角になっているとかその手の類かなぁ?

ちなみに
>$query .=" order by tb.day DESC,tb.jikan limit 0,50;
phpとして文法エラーです。このあたりの転記ミスをされると
本質的なエラーがどこにあるか回答のしようがありません
    • good
    • 0
この回答へのお礼

yamabejpさん
ご指摘有難うございます
printして補足に書き加えましたが、printしたものをphpmyadmimの上では実行できたのですが…
半角・全角スぺースはなさそうでした。

お礼日時:2016/04/12 15:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!