- 締切済み
(MySQLで修正スクリプトがうまくいかず困っています。
最近MySQLをはじめました、まだ初心者の者です。 MySQLデータベースで、修正用のスクリプトがうまく起動いたしません。自分なりに色々書籍やネット検索致しましたがどこが間違っているのか見出せません。 お手数ですが、どうか指南お願い致します。 リンクから呼び出すスクリプトと削除スクリプトの二点です。 -------------------(始)ここから明細スクリプト(始)--------------- <?php extract($_GET); mysql_connect('localhost','root','xxxx'); mysql_select_db('xxxx'); $sql = "select * from xxxx where id = '{$id}'"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "検索データが見つかりませんでした。"; exit; } else { while($row = mysql_fetch_array($result)){ echo "<h2> " , $row["title"] , "</h2>"; echo "<p><font size=\"-2\">#", $row["id"] ," ●",$row["tourokubi"] ,"</font></p>\n"; echo "<p><div class=\"hon\">", nl2br($row["honbun"]), "</div></p>"; echo "<div class=\"key\">keywords: ", nl2br($row["keyword"]), "</div>"; $row["id"]; echo "</p>"; echo "</p>"; echo "<a href=\"correct.php?id="; echo $row["id"]; echo "\">[修正する]</a>"; echo "<a href=\"j_sakujo1.php?id="; echo $row["id"]; echo "\">[削除する]</a><hr>"; } } ?> ------------------------(終)ここまで(終)------------------------ -------------------(始)ここから削除スクリプト(始)--------------- <?php extract($_POST); extract($_GET); mysql_connect('localhost','root','xxxxx'); mysql_select_db('xxxxx'); //修正レコード if($honbun<>""){ $sql = "update xxxxx set title='$title', honbun='$honbun', keyword='$keyword' where id = $id"; mysql_query($sql); echo "レコードの修正が完了しました"; exit; } // 修正ルーチン $sql = "select * from xxxxx where id = $id"; $result = mysql_query($sql); while($row = mysql_fetch_array($result)){ $tourokubi = $row["tourokubi"]; $title = $row["title"]; $honbun = $row["honbun"]; $keyword = $row["keyword"]; } echo "<form action=\"correct.php\" method=\"post\" >\n"; echo "<p>・日付<br>\n"; echo $tourokubi, "</p>\n"; echo "<p>・タイトル<br>\n"; echo "<input type=\"text\" name=\"title\" value=\"",$title, "\"size=60 ></p>\n"; echo "<p>・本文<br>\n"; echo "<textarea name=\"honbun\" rows=20 cols=70 >\n"; echo $honbun; echo "</textarea></p>\n"; echo "<p>・キーワード(スペース区切りで列記)<br>\n"; echo "<textarea name=\"keyword\" rows=2 cols=70 >\n"; echo $keyword; echo "</textarea></p>\n"; echo "<p><input type=\"hidden\" name=\"i\" value=\"", $i, "\"> "; echo "<p><input type=\"submit\" value=\"修正\"> "; echo "<input type=\"reset\" value=\"クリア\"></p>\n"; echo "</form>\n"; ?> -------------------(終)ここまで(終)---------------------- 修正ボタンを押すと、修正しました。と表示されるのですが、 なぜかデータは更新されておりません。 自分なりに調べましたが、原因がどうしても分かりません。 ご指南よろしくお願い致します。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
つっこみどころが多くてなんともいえませんが、以下を気をつけると 少しは改善されるのでは? ・GETやPOSTにextractをつかわない。 ・SQL文は大文字でかいて、フィールド名にはバッククォーテーション、 値にはシングルクォーテーションをつかってくくる。 ・文字列中の変数は{}でくくる。 ・echoやprintを連発せずにヒアドキュメントをつかう。 ちなみに本件では <a href="correct.php?id={$row["id"]}">[修正する]</a> でcorrect.phpにidを渡して修正しているようですが、 if($honbun<>"") で修正ルーチンを呼び出しています。これって$honbunは""なので なぜレコードが修正されてるのかわかりません。 おそらくかなり思い込みが入っていると思います。
補足
ご回答ありがとうございます。 なるほど、そう簡単にはいくものではないものですね。 気をつける点を修正し、もう一度やってみたいと思います。