下記のように、MySQLのデータをPHPでテーブル形式で表示しています。
【PHP部分】
$check_sql = "SELECT * FROM table WHERE ( check1 LIKE '%東京%' OR check2 LIKE '%品川%' OR check3 LIKE '%%' ) AND hinichi > NOW( )";
$check_recordSet = mysql_query($check_sql);
$check_rows = mysql_num_rows($check_recordSet);
if($check_rows){
while($check_row = mysql_fetch_array($check_recordSet)) {
$checktable = "<tr>";
$checktable .= "<td>".$check_row["check1"]."</td><td>".$check_row["check2"].$check_row["check3"]."</td>";
$checktable .= "</tr>\n";
}
$msg = $check_rows."件みつかりました";
}
【HTML部分】
<?= $msg ?>
<table>
<?= $checktable ?>
</table>
$checktable が表示されないのですが、
どうも間違えている箇所がわかりません。
$msgは表示されます。
また、$check_sqlは、PHPMyAdmin上で試していますが、エラーは出ておりません。
ご存じの方いらっしゃいましたら、ご教授お願い致します。
No.2ベストアンサー
- 回答日時:
ダメなところを箇条書きで・・・
・今回の原因は#1で既出のとおり変数の上書でしょう
・SELECT *
トラブルのときにこれをやっている限り解決を難しくしています
オーバーヘッドを減らすためにも、今回の件であれば
「SELECT check1,check2,check3」とすべきです。
・OR check3 LIKE '%%'
これがある限り、全件出てくるので「check1 LIKE '%東京%' OR check2 LIKE '%品川%' 」
は無駄でしょう
・AND hinichi > NOW( )
前回も書きましたが、型の違うものを比較するのはトラブルのもとです
hinichiがdate型ならCURDATE()と比較すべきです
(日付の比較の際にはBETWEENでよくトラブルになります)
・if($check_rows){
これ自体余り効率化に寄与しません。むしろなくてよいでしょう。
もしクエリを回す前に事前チェックをしたいなら
同じWHERE句をつかったCOUNT(*)で件数をひっぱることです。
・<table><?= $checktable ?></table>
$checktableに戻り値がないときにHTMLの文法違反になります。
PHPのプログラム内でtableタグはつけてしまってください
この回答への補足
前回に続き、ご丁寧にありがとうございます!!
全くわからないとこから、なんとか形にはなるよう勉強していて、
こんなに丁寧に指摘していただく方もいなかったので・・・
本当、ありがとうございます!!
早速、ご回答&その他ダメなとこ、別ページもいっぱいつかっているので…
見直します!
お礼の方は、試した後再度記入させていただきます!!
No.1
- 回答日時:
まず一つ
$checktable = "<tr>";
↑これでfetchで何件ループが回ろうともそれまでセットされたchecktableの内容が"<tr>"上書きされるため最後のレコードの内容しかテーブルの中身が作成されません。
$checktable .= "<tr>";
としてください。
また、$checktableが表示されないということですが出力された画面のソースは確認されましたか?
もしかして検索された一番最後のレコードはcheck1,2,3すべて空文字で<tr>,<td>だけ出力されているのかもしれません。
「check3 LIKE '%%'」 ですのでcheck3がNULLでなければ検索条件に該当することになります。
文字化けを起こしている可能性もあるかもしれません。
とりあえず本当にtable内部がソースにも出力されていないのかを確認してみてください。
この回答への補足
ご丁寧にありがとうございます!!
本当、未熟者で、ダメなコードばかりで…
詳しくご指摘いただき、大変感謝しております!!
お礼の方は、試した後再度記入させていただきます!!
>>とりあえず本当にtable内部がソースにも出力されていないのかを確認してみてください。
何も出力されておりませんでした。
>>check3がNULLでなければ検索条件に該当することになります。
NULLに設定しようとするとエラー#1067が出てしまって…、
こちら、データベースの方見直してみます!!
ありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- JavaScript 正規表現について質問です。条件に合う場合はtrueを返したい 3 2022/10/06 23:02
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- FX・外国為替取引 mql4のコンパイルエラー箇所の修正お願いします。 1 2023/03/15 16:14
- クレジットカード 楽天カードの3Dセキュアがエラーになってしまう原因はなんですか? 2 2023/08/06 18:23
- 英語 BIG CITY LIFE Look at the title of the text. Use a 2 2022/05/17 22:07
- 英語 翻訳お願いします。 3 2022/10/05 22:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
php 投票システム
-
checkboxクリック時、SQLを実行...
-
sortable ギブアップです…助け...
-
ラジオボタンをループすること...
-
PHP と MySQL でテーブルの行数...
-
[PHP+MySQL] データをランダム...
-
PHPについてなのですが未定義の...
-
mysql_fetch_array の速度について
-
PHPで[]の使い方について
-
DBで検索結果に該当するデータ...
-
phpのエラーについてです
-
Q&Aサイトを作成していてURLの...
-
<VB.NET>INSERT文でDBにデータ...
-
実行時エラー3131 FROM 句の構...
-
VBAをつかってクエリの情報を抽...
-
会員サイトでログイン後の会員...
-
日またぎの計算
-
CSVをダウンロードさせた際、CS...
-
テキストボックスに入れた内容...
-
配列をループさせてUPDATE
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DBで検索結果に該当するデータ...
-
PHPで[]の使い方について
-
アラートでyes noを作りたいです。
-
phpでmysqlを使ってデータベー...
-
PHP、SQLite3のデーターでログ...
-
dbに登録したデータをphpのプル...
-
checkboxクリック時、SQLを実行...
-
PHPでMY SQLの連想配列をリンク...
-
文字化けが解決できません。お...
-
PHPでMySQLデータを呼び出し、w...
-
SELECT結果から動的にコンボボ...
-
php ログインフォーム作成
-
VBA初心者です。
-
チェックボックスでチェックし...
-
sortableを使用したデータのUPDATE
-
php mysqlで作ったデータをgoog...
-
mysql_insert_id()の使い方
-
PHPとSmartyを使い、データベー...
-
MySQLに保存した画像を表示したい
-
PHP+MySQLでの配列のinsert文に...
おすすめ情報