PHPとSQLiteで、SQLをテストするためのプログラムを書いています。
PHPでテキストエリアをつくり、そこにSQL文を入力⇒実行して表示
までをブラウザ上で行うプログラムです。
クジラ飛行机著のPHPレッスンブックを見ながら書いています。
教科書通りに写していったのですが、構文エラーが出てしまい次に進めません。
3時間ほど睨めっこしましたが見つからず。。
PHP
1<html> 2<head> 3 <meta charset="utf-8"> 4 <title>SQL テスト</title> 5</head> 6<body> 7 <?php 8// SQLの入力フォームの表示 9 $query = isset($_GET["query"]) ? $_GET["query"] : ""; 10 $q_html = htmlspecialchars($query); 11 echo <<< _FORM_ 12 <form> 13 <div> SQLを以下に記述:</div> 14 <textarea name="query" rows="5" cols="70">{$q_html}</textarea> 15 <div> 16 <input type="submit" value="SQL実行" /> 17 </div> 18 </form> 19 _FORM_; 20 //SQLを実行する 21 if ($q_html !=""){ 22 $db = new PDO("sqlite:./test.db"); 23 $db ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 24 try{ 25 //実行して結果を表示する。 26 $html = $head = ""; 27 foreach($db->query($query, PDO::FETCH_ASSOC) as $row) { 28 if ($head=="") {//ヘッダ行 29 $keys = array_keys($row); 30 $head.="<tr>"; 31 foreach($keys as $c){ 32 $c_html=htmlspecialchars($c); 33 $head.="<th>$c_html</th>"; 34 } 35 $head .="</tr>"; 36 } 37 $html .="<tr>"; 38 foreach ($row as $c) { //実行結果 39 $c_html = htmlspecialchars($c); 40 $html.="<td><pre>$c_html</pre></td>"; 41 } 42 $html.="</tr>\n"; 43 } 44 echo "<p style='font-weight:bold; color:blue;'>実行しました</p>"; 45 echo "<table border='1' bgcolor='#fff' cellpadding='4'>"; 46 echo $head . $html; 47 echo "</table>"; 48 }catch(Exception $e){ 49 $msg = $e->getMessage(); 50 echo "<div style='color:red'>$msg</div>"; 51 } 52 } 53 ?> 54</body> 55</html> 56
{}の位置は教科書と同じです。
スペルミスを数カ所確認したので訂正しました。
DreamWeaverにコピペしてエラー部分を確認して、エラー部分を削除し続けると
echo>>>FORM
<form> ~~~ </form> _FORM_;を消したところでエラーが消えたのでこのあたりが怪しいと思ったのですが、教科書との違いは見当たらず。。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/04 08:10