![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
下記の実行すると、エラーが表示され
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のエラー?になって困っています。
No.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";
など、条件を行にわけると、エラーの箇所をより細かく限定できるかもしれません
具体的なエラー行数が表示されるので
有難うございます。
条件を行に分けて、実行したところ、エラーのlineが常にLIMIT 0,50のラインに来ていることが確認できました。
サーバの関係で使えないとかあるのでしょうか??
No.2
- 回答日時:
>上記のように表示され、phpmyadmin上にコピペすると問題なく結果がでますが
#1でも書きましたタイプミス、転記ミスない?
cfってなに?db.fpってなに?
すいません。cf,db.fpはここに書き込み編集ミスしていました
実際には不明なものはないように思います。
LIMIT 0,50を外すだけで、正常に動くのも不思議でなりません。
No.1
- 回答日時:
>'and tb.fp='4''
のあたりでエラーが出ているのLimit句以前の問題では?
print $queryしてみればSQL文全体で文法エラーの箇所が検証できるでしょう
たとえば半角スペースが全角になっているとかその手の類かなぁ?
ちなみに
>$query .=" order by tb.day DESC,tb.jikan limit 0,50;
phpとして文法エラーです。このあたりの転記ミスをされると
本質的なエラーがどこにあるか回答のしようがありません
yamabejpさん
ご指摘有難うございます
printして補足に書き加えましたが、printしたものをphpmyadmimの上では実行できたのですが…
半角・全角スぺースはなさそうでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mysqlがインストールされている...
-
SQLでカラムを追加し、条件に合...
-
#1062 - '0' は索引 'PRIMARY' ...
-
BGMを教えてほしいです!
-
【初歩】ラジオボタンをつかっ...
-
矛盾していないでしょうか?
-
テーブル名が可変の場合のクエ...
-
int(11)の(11)とは何を意味して...
-
エラー 1068 (42000): 複数の主...
-
はもうダメですか?
-
あってますか?SQL
-
WHERE `年月日` = '晴' OR `年...
-
SQLです教えてくださいお願いし...
-
SQLを作ったのですがうまくいき...
-
(初心者)MySQLやmaraDBで、crea...
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
SQLです教えてください。
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Null値が入れられない
-
NULLを含む列の足し算
-
nullと同じく空白をCountしない...
-
テーブル作成時に、「`id` int(...
-
MySQLで関連したデータを横に並...
-
MySQLの特定のカラムの内容を全...
-
フラグの格納方法について
-
SQL文を入力したらエラー
-
質問内容の仕様のSQLがわからな...
-
SQLでLIMIT句を入れるとエラー...
-
phpとSQLで複数条件で検索する...
-
VIEWに対してWHERE句をつける
-
空白文字を含む文字列データの検索
-
JOIN使ってないのに、JOIN操作...
-
SQL任意に並び替えをしたい
-
find_or_createのようなクエリ...
-
MySQL + PHP での自動採番
-
sqlの中で、 例えば条件句で AN...
-
コマンドプロンプト 複数の実...
-
count()の結果を別の計算で使う...
おすすめ情報
補足します。
$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上にコピペすると問題なく結果がでますが
サイト上で行うと、本文のエラーとなります。