以前質問しましたが、解決できませんでした。
ヒアドキュメント内での多次元配列の扱いで悩んでいます。
ソースは
<?php
require_once("mysql.php");// MySQLへのID・パスワードの取得をするファイルへのアクセス
function kensaku($str1,$str2,$str3,$str4){
$mysql = new MySQL;
$sql = "SELECT * FROM tankanji
WHERE
kanji like '%$str1%'
AND
(onyomi like '%$str2%'
OR
kunyomi like '%$str2%')
AND
kakusuu like '%$str3%'
AND
busyu like '%$str4%'";
$row=$mysql->query($sql);
echo <<<EOM
<TABLE width="3000" frame="border" border="3" cellspacing="1" cellpadding="3">
<TBODY>
<TR><TH>id</TH><TH>漢字</TH><TH>音読み</TH><TH>訓読み</TH>
<TH>画数</TH><TH>部首</TH></TR>
while ($row = $mysql->fetch()){
<TR>
<TD align="center"><?={$row['id']}?></TD>
<TD align="center"><?={$row['kanji']}?></TD>
<TD align="center"><?={$row['onyomi']}?></TD>
<TD align="center"><?={$row['kunyomi']}?></TD>
<TD align="center"><?={$row['kakusuu']}?></TD>
<TD align="center"><?={$row['busyu']}?></TD></TR>
}
</TBODY>
</TABLE>
EOM;
}
なんですが、うまくいきません。
$row=$mysql->query($sql); のあとでprint文で$rowの中身を表示させたらきちんと入っているのでecho <<<EOM以降がおかしいものと思います。
エラーの内容としてはsyntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRINGと表示されてしまいます。これがどうしてもやらないといけないことでしてものすごく困っています。。初心者の質問で大変申し訳ないです。
No.2ベストアンサー
- 回答日時:
あれ?何か変な書き方してますね もう一箇所 訂正でした
ヒアドキュメントの中なら
<TD align="center"><?={$row['kakusuu']}?></TD>
↓
<TD align="center">{$row['kakusuu']}</TD>
こうです
これの前の質問で、ヒアドキュメントを使うのが間違いという指摘が
ありましたが、私にはこの間違いの理由がわからないので
とりあえずヒアドキュメント内での表示の仕方のアドバイスでした
(一個目のレスつけてから指摘に気づいてしまったので今、弁解を…)
※ 根本的にヒアドキュメントの使用が間違っているということでも
今後ヒアドキュメントを使う時に こういう書き方をするってことは
覚えていてもよろしいかと思います
丁寧にご指導ありがとうございます。とてもわかりやすくて助かります。
koke29さんの言うとおり
echo <<<EOM以降を
echo <<<EOM
<TABLE width="3000" frame="border" border="3" cellspacing="1" cellpadding="3">
<TBODY>
<TR><TH>id</TH><TH>漢字</TH><TH>音読み</TH><TH>訓読み</TH>
<TH>画数</TH><TH>部首</TH></TR>
EOM;
while ($row = $mysql->fetch()){
echo <<<EOM
<TR>
<TD align="center">{$row['id']}</TD>
<TD align="center">{$row['kanji']}</TD>
<TD align="center">{$row['onyomi']}</TD>
<TD align="center">{$row['kunyomi']}</TD>
<TD align="center">{$row['kakusuu']}</TD>
<TD align="center">{$row['busyu']}</TD></TR>
EOM;
}
echo <<<EOM
</TBODY>
</TABLE>
EOM;
このように変更して実行したらsyntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRINGが現われます。
僕の変更の仕方が間違っていましたらぜひご指摘をお願いしたいのですが、初心者で申し訳ないです。
No.3
- 回答日時:
エラーについてちょっと調べてみたところヒアドキュメントの閉じ(EOM;)
の後ろにスペースとかが入ってる時に出たりするみたいです
(たぶんそれだけじゃないとは思いますが)
載せてあるコードを見る感じだと不要なスペースは見当たらないですが
実コードはどうですか??(ドラッグしたらわかるかな)
投稿するときに原文をtrimされたりしてたらわからないので
念のため実コードでチェックしてみて下さい
【 あと、やってみて欲しいコト 】
ヒアドキュメントを一回コメントアウトして
while ($row = $mysql->fetch()){
print {$row['id']};
print $row['id'];
print {$row[id]}
print $row[id]
}
↑のどれかで表示されれば その記述でコードを書いてみる…
※二重引用符?がいらない場合もあるような記事を見かけたので一応
出そうなパターンでやってみて欲しいなぁ…と。
また、ヒアドキュメントだけfunctionの外にだして
動作するかどうか確認してみる
↑でエラーになるなら、ヒアドキュメントの書き方の問題ってことが
確定するので、あとは一つずつチェックしてみる、と。
うーん…総当りで申し訳ないです
もっと的確なレスがつけれれば良いのですが私も勉強中なもので…
(ここでレスをするのも勉強の一環なのです)
No.1
- 回答日時:
ヒアドキュメントの中にwhileは入れれないですよ
1.項目名のテーブル部分で一回ヒアドキュメントを終了
2.whileを書いた後にまたヒアドキュメントを入れる
3.while終了(})の手前でヒアドキュメントを終了
4.</TBODY></TABLE>はechoでもヒアドキュメントでもお好きに
↑のように修正して下さい
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- HTML・CSS 【CSS】:hasで可能? imgを含むtr要素を選択したい 1 2022/11/17 14:36
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- HTML・CSS 自身のHPにYouTube動画を貼り付けるのが出来なくなり困ってます 1 2022/11/11 10:44
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
pg_queryの結果を2回とりだす...
-
PHP 勤務時間の合計を出したい
-
検索結果($_POST)が2ページ目...
-
データベースのページング出力...
-
checkboxクリック時、SQLを実行...
-
DBのデータを表示させたい
-
ラジオボタンをループすること...
-
mySQLからデータを取り出す
-
SELECT結果から動的にコンボボ...
-
PHPでMY SQLの連想配列をリンク...
-
アラートでyes noを作りたいです。
-
mysqlのcountの挙動
-
VBA初心者です。
-
checkboxで複数選択して,OR...
-
データベース表示結果のデザイン
-
dbに登録したデータをphpのプル...
-
phpのif文について
-
PHP 10件表示 "前へ" "次へ"
-
ユーザー名、パスで認証して、...
-
配列としてMysqlから値を取得す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAについて
-
PHPで[]の使い方について
-
DBで検索結果に該当するデータ...
-
アラートでyes noを作りたいです。
-
dbに登録したデータをphpのプル...
-
phpでmysqlを使ってデータベー...
-
sortable ギブアップです…助け...
-
checkboxクリック時、SQLを実行...
-
PHPでMY SQLの連想配列をリンク...
-
チェックボックスによる複数の...
-
PHPでMySQLデータを呼び出し、w...
-
mysql_fetch_objectの書き方を...
-
SELECT結果から動的にコンボボ...
-
チェックボックスでチェックし...
-
VBA初心者です。
-
PHPについてなのですが未定義の...
-
文字化けが解決できません。お...
-
htmlとphpの分離
-
php テーブルが作成できない
-
検索結果をgoogleのように数件...
おすすめ情報