こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

MySQL記述でアドバイスを

MySQL記述で悩んでいます。
結合を加えたら以前の機能が再現できません。
前の形は
$sql = "select * from snnotedb " . $where . "order by regdate desc limit " .
$PAGESIZE * ($page - 1) . ", $PAGESIZE";
検索機能と頁めくり機能が組み込めない
結合して結果は得ることはできた記述。
$sql = "select snnotedb.no,snnotedb.title,snnotedb.category,snnotedb.notename,snnotedb.regdate, count(snpagedb.noteno) as calc from snnotedb
left join snpagedb on (snnotedb.no = snpagedb.noteno)
group by snnotedb.no,snnotedb.title,snnotedb.category,snnotedb.notename,snnotedb.regdate";
//結果セットを取得します
$rst = mysql_query($sql, $con);

次の句のつなぎ方を教えてください。何か「ネスト」とか「いれこ状態」の括りが必要そうなのですが解りません。
. $where . "order by regdate desc limit " . $PAGESIZE * ($page - 1) . ", $PAGESIZE";

前回の質問
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1858298
No.1858298 質問:MySQLテーブルの結合
システムは、Apache HTTP Server 2.0.45、PHP 4.3.2、MySQL 4.0.14
システム組合せの変更はしたくありません。出来るスキルがありません。

投稿日時 - 2005-12-29 09:01:24

QNo.1865258

暇なときに回答ください

質問者が選んだベストアンサー

>この句の後ろにソート句を付けるとダメと言われています

どういうメッセージが出てますか?

最初の例は、$sqlの最後に空白が1文字入ってますが、二つ目は入っていません。
$whereを文字連結して、「ORDER BY」が直前の文字列にくっついているのでは?

投稿日時 - 2005-12-29 09:23:02

補足

ありがとう御座います
まず第1のorder byのくっつきは有りました
これを離したら表示は巧くされました
それ以前の他のスクリプトではくっついたままで機能しています
他での確認をしますので報告まで

投稿日時 - 2005-12-29 11:38:17

お礼

<補足です>すみませんお礼が補足文になりました
半角スペースでの問題点は正解でした
「order by」と「limit」の前後のダブルコーテーションの間に半角スペースは必要でした
ここまで確認して外出しました。外出から戻り「キーワード」検索をしました「$where」の検索が機能しません
検索事態は検索をしているようで結果件数は「前のスクリプト」と間違いない個数を数字が表示していますが、結果一覧の出るべき横一列のリスト表示が出ません。
よく聞かれるエラー表示では
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:Program FilesApache GroupApache2htdocsmm-look.php on line 167
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in C:Program FilesApache GroupApache2htdocsmm-look.php on line 315
(無駄なスクリプト100行ほど間に入っています)
横一列の項目表示なしで、中抜きの頁送りは正常に機能していました?
while句の始まり167
○while($col = mysql_fetch_array($rst)) {
最後尾の〆部分315
○mysql_free_result($rst);
半角スペースの件を含めて、結合文が入った場合の処理の仕方が違うようで理解できません
「どなた」かさらなるアドバイスをよろしく
ちなみにこの上の文章はサーバー側から記入しました
IE接続のクライアントPCからコピー、貼り付けで助けて文を送り出しています
「$where」句の前後処理に問題点がありますか・・

投稿日時 - 2005-12-29 20:15:26

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

. $where . "order by regdate desc limit " . $PAGESIZE * ($page - 1) . ", $PAGESIZE";

これは

. $where . "order by regdate desc limit " . ($PAGESIZE * ($page - 1)) . ", $PAGESIZE";

としましょう。
.で連結する場合、計算式が入っていると、括弧で囲わないと最初の文字だけ連結して、あとは式とされてしまうので、エラーになります。

これでダメなら、変数を展開した $sql を提示して頂かないと分かりません。

投稿日時 - 2005-12-29 10:28:45

補足

ありがとう御座います
まず第1のorder byのくっつきは有りました
これを離したら表示は巧くされました
それ以前の他のスクリプトではくっついたままで機能しています
()に付いては付けても外しても変化はありませんが付けたままで少し確認します
他での確認をしますので報告まで

投稿日時 - 2005-12-29 11:42:43

お礼

どうも質問する内容の把握が出来かねていたようです
あらためて質問させていただきます
今回は今回での成果は有りました

投稿日時 - 2005-12-30 12:20:19

あなたにオススメの質問