下記のように、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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPで[]の使い方について
-
文字化けが解決できません。お...
-
checkboxクリック時、SQLを実行...
-
SELECT結果から動的にコンボボ...
-
チェックボックスでチェックし...
-
PHP+MySQLでの配列のinsert文に...
-
アラートでyes noを作りたいです。
-
実行時エラー3131 FROM 句の構...
-
insert1つの処理でもトランザ...
-
SQLインジェクション対策
-
テストdataの作成について
-
JAVA SQLServerException 列名 ...
-
SELECT文を発行して、ACCESSよ...
-
VB.NET エラーになる箇...
-
MySQLでデータベースにデータin...
-
日またぎの計算
-
LocalのNotesメールDBをVBAで参...
-
VB.NET
-
MySQLにHTMLタグを挿入したい
-
VBAをつかってクエリの情報を抽...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アラートでyes noを作りたいです。
-
dbに登録したデータをphpのプル...
-
PHPで[]の使い方について
-
checkboxクリック時、SQLを実行...
-
php ログインフォーム作成
-
php5のコンストラクタをphp4仕...
-
PHPでMySQLデータを呼び出し、w...
-
phpでmysqlを使ってデータベー...
-
SELECT結果から動的にコンボボ...
-
checkboxで複数選択して,OR...
-
mysqlから取得した配列をカンマ...
-
DBで検索結果に該当するデータ...
-
ラジオボタンをループすること...
-
[php]mysqlデータ配列取得について
-
エクセルVBAについて
-
sortable ギブアップです…助け...
-
チェックボックスによる複数の...
-
PHPとSmartyを使い、データベー...
-
PHP、SQLite3のデーターでログ...
-
PHPのスタイルシート割り当て
おすすめ情報