http://oshiete1.goo.ne.jp/qa3583661.htmlの質問の続きなのですが、条件分岐による検索のプログラムを書きたいのですが、
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\xampp\htdocs\iiko.php on line 61
というエラーが起こってしまいました。
いろいろとPHPのサイトを見て回って考えたのですが、解決策がわかりません。
フォームの構造は
<html>
<head>
<title>abcde</title>
</head>
<body>
<FONT size="4">abcde</FONT>
<form action="iiko.php" method="post">
a<br>
<br>
ある<INPUT type="radio" name="a" value="ある"><br>
ない<INPUT type="radio" name="a" value="ない"><br>
<br>
b<br>
<br>
ある<INPUT type="radio" name="b" value="ある"><br>
少しある<INPUT type="radio" name="b" value="すこしある"><br>
ない<INPUT type="radio" name="b" value="ない"><br>
<br>
c<BR>
ある<INPUT type="radio" name="c" value="ある"><BR>
ない<INPUT type="radio" name="c" value="ない"><BR>
<BR>
d<br>
ある<INPUT type="radio" name="d" value="ある"><br>
ない<INPUT type="radio" name="d" value="ない"><br>
<br>
e<br>
ある<INPUT type="radio" name="e" value="ある"><br>
ない<INPUT type="radio" name="e" value="ない"><br>
<br>
<input type="submit" name="bottun1" value="送信">
</form>
</body>
</html>
検索リストのiiko.phpは、条件を選択すれば、デーブルのデータのID2~4番の人を表示させ様としています。
<html>
<body>
<?php
$a_1 = $_POST["a"];
$b_1 = $_POST["b"];
$c_1 = $_POST["c"];
$d_1 = $_POST["d"];
$e_1 = $_POST["e"];
require_once("DB.php");
$dbUser = "sample";
$dbPass = "password";
$dbHost = "localhost";
$dbName = "sampledb";
$dbType = "mysql";
$dsn = "$dbType://$dbUser:$dbPass@$dbHost/$dbName";
$conn = DB::connect($dsn);
//接続にしっぱいしたらメッセージを表示して終了します。
if (DB::isError($conn)) {
die($conn->getMessage());
}
$sql = <<<EOS
SELECT * FROM member
if($a_1 == "ある"and $b_1 == "ある"and $c_1 == "ない"and $d_1 == "ある" $e_1== "ある")
{
$sql = $sql . " WHERE id BETWEEN 2 AND 4;";
}
$result = $conn->query($sql);
if (DB::isError($result)) {
die($result->getMessage());
}
$count = $result->numRows();
print "検索結果は".$count."件です。<BR>";
if($count>0){
?>
<TABLE width="450" border="1" cellspacing="0" cellpadding="8">
<TBODY>
<TR><TH>番号</TH><TH>氏</TH><TH>名</TH><TH>年齢</TH></TR>
<?php
while($rs = $result->fetchRow(DB_FETCHMODE_ASSOC))
{
?>
<TR><TD align="center"><?=$rs['id']?></TD>
<TD><?=$rs['last_name']?></TD>
<TD><?=$rs['first_name']?></TD>
<TD align="center"><?=$rs['age']?></TD></TR>
<?php
}
?>
</TBODY></TABLE>
<?php
}
$result->free();
$conn->disconnect();
?>
</body>
</html>
です。
解決策を教えて下さい。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
exit;の処理はご存知の通り、そこで処理を終了するということです。
つまり、処理を終了させた場所までのソースに画面表示系のものがない場合、画面は真っ白になります。
しかし、画面が真っ白=エラーも出ていない、ということになるので、そこまでのソースに問題はないということにもなりますね。
> DB Error: syntax error
このエラーはSQLの文法ミスの場合に出ます。
SQLの作成が終わったら、
echo $sql;
exit;
を書いてSQL文の表示をして確認をしてみると、何か解決につながるかもしれませんよ。
No.6
- 回答日時:
32行目のif文ですが、エラーの通り、中に『;』がありますね。
if文の判定部分にあってはならない文字なので、消しましょう。
それと、SQLを使わない判別の時は~とおっしゃってますが、SQLはこのソースでは最初から使われています。
SQLの意味やif文の基本的な書き方がわからないようですし、もしかするとtaku3510さんにはまだ、このコーディングは難しいかもしれません。
もう少し簡単なプログラミングから始めると、きっと上達も早いと思いますよ。
回答ありがとうございます。
そうですね。自分でもちょっと難しいかなっと思っているのですが、本一冊だけを参考には限界があります。
今回はなんとか動くようになりましたが、もっと難しいのになるとしんどいですね。
アドバイスありがとうございました。
No.5
- 回答日時:
if($a_1 == "ある" and $b_1 == "ある" and $c_1 == "ない" and $d_1 == "ある" and $e_1== "ある";)
条件の最後に ; が・・
No.4
- 回答日時:
連投になって申し訳ないのですが、ソースを見てふと思ったので。
>$sql = <<<EOS
>SELECT * FROM member
この部分ですが、ヒアドキュメントを使わずに、普通に
$sql = "SELECT * FROM member";
と書いてもよいのではないでしょうか。
もちろん、追加した『EOS;』も外してください。
今の状態だと、SQLの中にif文が入ってしまっているような気がします。
この回答への補足
プログラムを変えてみると、Parse error: syntax error, unexpected ';' in C:\xampp\htdocs\iiko.php on line 32とエラーが出てきました。
if (DB::isError($conn)) {
die($conn->getMessage());
}
$sql = "SELECT * FROM member";
※if($a_1 == "ある" and $b_1 == "ある" and $c_1 == "ない" and $d_1 == "ある" and $e_1== "ある";)※
{
$sql = $sql . " WHERE id BETWEEN 2 AND 4;";
}
$result = $conn->query($sql);
if (DB::isError($result)) {
die($result->getMessage());
}
32は※の行なので、IF文がおかしいみたいです。
SQLを使わない判別の時は、このIF文で動いたのですが、SQLを使う時は、何か変えなければいけないのでしょうか?
No.2
- 回答日時:
> DB Error: syntax error
その名の通りDBのエラーでしょう。
connect, query, fetch のどこでエラーが出ているのか
exitで止めたりしながらまずは発生箇所を見極めてください。
デバッグはコードの上達に不可欠だと思いますよ。
この回答への補足
exitを書きながら進めていくと、
$dsn = "$dbType://$dbUser:$dbPass@$dbHost/$dbName";
$conn = DB::connect($dsn);
※exit;※
$sql = <<<EOS
SELECT * FROM member
と、
$sql = <<<EOS
SELECT * FROM member
if($a_1 == "ある"and $b_1 == "ある"and $c_1 == "ない"and $d_1 == "ある" $e_1== "ある")
{
$sql = $sql." WHERE id BETWEEN 2 AND 4;";
EOS;
※exit;※
$result = $conn->query($sql);
if (DB::isError($result)) {
die($result->getMessage());
}
の二箇所でエラーも何も表示されずに、真っ白になりました。
これは、何をあらわしているのでしょうか?
No.1
- 回答日時:
>on line 61
61行目にエラーがあると書いてあります。
60行目のけつに「;」をつけ忘れている可能性があります
この回答への補足
プログラムを以下の※の部分を加えるとParse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\xampp\htdocs\iiko.php on line 61
が消えました。
if($a_1 == "ある"and $b_1 == "ある"and $c_1 == "ない"and $d_1 == "ある" $e_1== "ある")
{
$sql = $sql . " WHERE id BETWEEN 2 AND 4;";
※EOS;※
しかし、DB Error: syntax errorという画面が表示されてしまいました。これは、どこがおかしいのでしょうか?
解決策を教えてください。
よろしくおねがいします。
回答ありがとうございます。
61行目というう事は※のところがおかしいって事ですよね?
<?php
while($rs = $result->fetchRow(DB_FETCHMODE_ASSOC))
{
?>
※<TR><TD align="center"><?=$rs['id']?></TD>※
<TD><?=$rs['last_name']?></TD>
<TD><?=$rs['first_name']?></TD>
<TD align="center"><?=$rs['age']?></TD></TR>
<?php
}
?>
</TBODY></TABLE>
<?php
}
$result->free();
$conn->disconnect();
?>
</body>
</html>
?>の前などに「;」をつけて見てもエラーが消えません。
「;」をつけるところが間違っているのでしょうか?
根本的に※から下のプログラムの構造がおかしいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
PHPのページ間による配列の受け...
-
POSTデータのNAME属性をVALUEに...
-
HTMLフォームで複数選択のチェ...
-
<input type="hidden" >で配列...
-
PHPでじゃんけん勝負
-
チェックボックスによる検索(...
-
extract($_POST)
-
テキストボックスに初期値を入れる
-
複数チェックボックスの入力制...
-
HTMLのリンクをクリックするこ...
-
PHP ボタンが押されたら処理を...
-
フォームボタンを押すたびに数...
-
チェックボックスの値に応じてP...
-
ラジオボタンのチェックを判定...
-
フォームへの前回入力値をクリ...
-
チェックボックスによる検索
-
アップロードの際にファイルパス
-
$_POSTを連想配列で取得したい!!
-
入力フォーム→確認画面→送信画...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
<input type="hidden" >で配列...
-
PHP ボタンが押されたら処理を...
-
フォームへの前回入力値をクリ...
-
検索時の選択内容を保持する方法
-
PHPで画像の渡しが上手く行きま...
-
フォームボタンを押すたびに数...
-
syntax error, unexpected '}' ...
-
フォームでのリセットを使う方法
-
パラメーターを隠す
-
$_SESSIONについて教えて下さい。
-
ラジオボタンをsessionで使いたい
-
画面が更新されてもチェックボ...
-
phpの掲示板で新しい順に表...
-
PHPで、ボタンを押すと同じペー...
-
phpでの複数選択チェックボック...
-
PHPでじゃんけん勝負
-
チェックボックスを使った複数...
-
DBの値をチェックボックスに反...
-
PHPのmysqlに格納したデータの...
おすすめ情報