PHPでMySQLデータを更新するとエラー

このQ&Aのポイント
  • PHPで作成したプログラムでMySQLにデータを登録しています。新規にデータの追加はできるのですが、更新するとエラーになります。
  • 更新時にエラーが発生しており、SQL文の構文エラーが原因です。具体的には、指定したグループの値を更新する際にエラーが発生しています。
  • 以前同じような問題を解決したときは、クラスや結合の設定が原因だった可能性があります。周りに相談することもできず、困っています。お力を貸していただけると助かります。
回答を見る
  • ベストアンサー

PHPでMySQLデータを更新するとエラー

PHPで作成したプログラムでMySQLにデータを登録しています。 新規にデータの追加はできるのですが、更新するとエラーになります。 スクリプトは if (isset($_POST["submit_upd"])){ $no = key($_POST[submit_upd]); $name = htmlspecialchars($_POST["name"][$no], ENT_QUOTES); $division = htmlspecialchars($_POST["division"][$no], ENT_QUOTES); $email = htmlspecialchars($_POST["email"][$no], ENT_QUOTES); $tel = htmlspecialchars($_POST["tel"][$no], ENT_QUOTES); $group = htmlspecialchars($_POST["group"][$no], ENT_QUOTES); $sql = "UPDATE user SET name='$name',division='$division',email='$email',tel='$tel',group='$group' WHERE no=$no"; $mysql->query($sql); $error = "{$no}番のデータを変更しました"; エラーは(例:4番のデータのグループを3番に変更) 1064:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group='3' WHERE no=4' at line 1 となっています。 以前同じプログラムで下記の質問をして、こちらは解決したのですが 結合していたり、whileループの設定などのせいでgroupの値を上手く得られないのか?と悩んでいます。 http://okwave.jp/qa3972723.html クラスも上記に記載してあります。 まわりに聞ける人が全くおらず困っています。 どうかお力を貸していただければと思いますので よろしくお願いします。

  • MySQL
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • calltella
  • ベストアンサー率49% (317/635)
回答No.2

GROUPはMysqlの予約語なのでカラム名やフィールド名に使用する事は好ましくありません。 他の名前に変えてやってみてください。

参考URL:
http://dev.mysql.com/doc/refman/4.1/ja/reserved-words.html
quakeandb
質問者

お礼

回答ありがとうございます。 名前を変更したらすぐに解決しました! 本当にありがとうございました!!

その他の回答 (1)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

エラーになるときの$sqlの内容は確認されていますか?また、その文字列をphpMyAdminなどで直接実行しても同じエラーになりますか? 「group='3' WHERE no=4」がsyntaxエラーということなのですが、これより前でおかしいのではないかと邪推するのですが・・。 あと、htmlspecialchars()を多用されているようですが、MySQLならmysql_real_escape_string()を通すべきじゃないですかねぇ・・。

quakeandb
質問者

お礼

回答ありがとうございます。 今回はno.2さんの回答で解決しましたが 今後役立ちそうな知識をいろいろとありがとうございました!

関連するQ&A

  • PHPからMySQLにデータを渡すと文字化け

    PHPからフォームにデータを入れてMySQLに渡すとどうしても文字化けをしてしまいます。 MySQLはEUCらしいのです。 コレが解決すればほぼ完成するのに、最後の最後につまずいてます。 <?php require_once("../mydb_ini.php"); $con_mydb = mysql_connect($MYDBSERVER, $MYDBUSER, $MYDBPASSWARD); $selectmydb = mysql_select_db($MYDBNAME, $con_mydb) or die("失敗です");; $num=0; $mydbsql = "select * from newsline"; $rst = mysql_query($mydbsql, $con_mydb); $num = mysql_affected_rows(); $error = ""; $new_no = ""; $new_category = ""; $new_date = ""; $new_content = ""; $new_url_db = ""; $new_target = ""; $new_disabled = ""; if($_SERVER['REQUEST_METHOD']=="POST"){ if(isset($_POST["submit_add"])){ $new_no = htmlspecialchars($_POST["new_no"], ENT_QUOTES); $new_category = htmlspecialchars($_POST["new_category"], ENT_QUOTES); $new_date = htmlspecialchars($_POST["new_date"], ENT_QUOTES); $new_content = htmlspecialchars($_POST["new_content"], ENT_QUOTES); $new_url_db = htmlspecialchars($_POST["new_url_db"], ENT_QUOTES); $new_target = htmlspecialchars($_POST["new_target"], ENT_QUOTES); $new_disabled = htmlspecialchars($_POST["new_disabled"], ENT_QUOTES); if($error==""){ mb_convert_encoding($content, "EUC-JP"); $mydbsql = "INSERT INTO newsline VALUES('" . $new_no . "','" . $new_category . "', '" . $new_date . "', '" . $new_content . "', '" . $new_url_db . "', '" . $new_target . "', '" . $new_disabled . "')"; $rst = mysql_query($mydbsql, $con_mydb); } } if(isset($_POST["submit_upd"])){ $no = key($_POST[submit_upd]); $category = htmlspecialchars($_POST["category"][$no], ENT_QUOTES); $date = htmlspecialchars($_POST["date"][$no], ENT_QUOTES); $content = htmlspecialchars($_POST["content"][$no], ENT_QUOTES); $url_db = htmlspecialchars($_POST["url_db"][$no], ENT_QUOTES); $target = htmlspecialchars($_POST["target"][$no], ENT_QUOTES); $disabled = htmlspecialchars($_POST["disabled"][$no], ENT_QUOTES); if($error==""){ mb_convert_encoding($content, "EUC-JP"); $mydbsql = "UPDATE newsline SET category='$category', date='$date', content='$content', url_db='$url_db', target='$target', disabled='$disabled' WHERE no=". $no; $rst = mysql_query($mydbsql, $con_mydb); } } if(isset($_POST["submit_del"])){ $no = key($_POST[submit_del]); $mydbsql = "DELETE FROM newsline WHERE no=". $no; $rst = mysql_query($mydbsql, $con_mydb); } if($error==""){ $mydbsql; $new_no = ""; $new_category = ""; $new_date = ""; $new_content = ""; $new_url_db = ""; $new_target = ""; $new_disabled = ""; } } ?>

    • 締切済み
    • PHP
  • POSTされたデータをそのまま変数名にするような・・・

    お世話になります。 タイトルのとおりなのですが、POSTされたデータをそのまま変数名にするような便利な方法はないでしょうか。 $name=htmlspecialchars($_POST["name"], ENT_QUOTES, $code); $email=htmlspecialchars($_POST["email"], ENT_QUOTES, $code); ・ ・ ・ をたくさんあるので簡単にできないかなーと思ったんですが、何か良い方法がありましたら教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPでMySQLデータを呼び出し、whileループの中で別テーブルのデータをループするには

    MySQLからuserというテーブルのデータを呼び出し、表示すると同時にフォームとしてデータの変更もできるプログラムを作成しています。 その項目の中に別のusergrというテーブルのデータをリストボックスで表示させたいのですが、うまくいきません。 現状では下記のスクリプトでuserの1番のデータだけが表示されている状態です。(リストボックスも問題なく表示はされていますが…) まわりに聞ける人もいず、本などを見よう見まねで作成したため、根本的に誤ってるところがあるかと思いますが、どうかアドバイス頂けませんでしょうか。 $sql = "SELECT * FROM user"; $mysql->query($sql); while($row = $mysql->fetch()){ $no = $row["no"]; $name = $row["name"]; $division = $row["division"]; $email = $row["email"]; $tel = $row["tel"]; $group = $row["group"]; echo <<<EOT <td align="center">$no</td> <td align="center"><input type="text" name="name[$no]" value="$name" size="10"></td> <td align="center"><input type="text" name="division[$no]" value="$division" size="20"></td> <td align="center"><input type="text" name="email[$no]" value="$email" size="30"></td> <td align="center"><input type="text" name="tel[$no]" value="$tel" size="10"></td> <td align="center"> <select name="group[$no]"> EOT; $sql = "SELECT * FROM usergr LEFT JOIN user ON usergr.grno=user.group"; $mysql->query($sql); while($row = $mysql->fetch()){ $group = $row["group"]; $grno = $row["grno"]; $grname = $row["grname"]; if($row["grno"]==$group){ echo "<option value=\"{$row['grno']}\" selected=\"selected\">{$row['grname']}</option>"; } else { echo "<option value=\"{$row['grno']}\">{$row['grname']}</option>"; } } echo <<<EOT </select> </td> <td align="center"><input type="submit" name="submit_upd[$no]" value="変更"> <input type="submit" name="submit_del[$no]" value="削除"></td> </tr> EOT; }

    • ベストアンサー
    • PHP
  • MySQLで表示され、追加・削除・変更ができない。

    MySQLでPHPにデータを追加・削除・変更を作っていたのですが、 表示はどうにかしてできたのですが、 追加・削除・変更のボタンを押してもなにもかわりません。 何回も見たのですが、どこが間違えてるのかさっぱりです。 <?php require_once("../mydb_ini.php"); $con_mydb = mysql_connect($MYDBSERVER, $MYDBUSER, $MYDBPASSWARD); $selectmydb = mysql_select_db($MYDBNAME, $con_mydb); $num=0; $mydbsql = "select * from newsline"; $rst = mysql_query($mydbsql, $con_mydb); $num = mysql_affected_rows(); $error = ""; $new_no = ""; $new_category = ""; $new_date = ""; $new_content = ""; $new_url_db = ""; $new_target = ""; $new_disabled = ""; if($_SERVER['REQUEST_METHOD']=="POST"){ if(isset($_POST["submit_add"])){ $new_no = htmlspecialchars($_POST["new_no"], ENT_QUOTES); $new_category = htmlspecialchars($_POST["new_category"], ENT_QUOTES); $new_date = htmlspecialchars($_POST["new_date"], ENT_QUOTES); $new_content = htmlspecialchars($_POST["new_content"], ENT_QUOTES); $new_url_db = htmlspecialchars($_POST["new_url_db"], ENT_QUOTES); $new_target = htmlspecialchars($_POST["new_target"], ENT_QUOTES); $new_disabled = htmlspecialchars($_POST["new_disabled"], ENT_QUOTES); if($error==""){ $mydbsql = "INSERT INTO newsline VALUES($new_category', '$new_date', '$new_content', '$new_url_db', '$new_target', '$new_disabled')"; } } if(isset($_POST["submit_upd"])){ $no = key($_POST[submit_upd]); $category = htmlspecialchars($_POST["category"][$no], ENT_QUOTES); $date = htmlspecialchars($_POST["date"][$no], ENT_QUOTES); $content = htmlspecialchars($_POST["content"][$no], ENT_QUOTES); $url_db = htmlspecialchars($_POST["url_db"][$no], ENT_QUOTES); $target = htmlspecialchars($_POST["target"][$no], ENT_QUOTES); $disabled = htmlspecialchars($_POST["disabled"][$no], ENT_QUOTES); if($error==""){ $mydbsql = "UPDATE newsline SET category='$category', date='$date', content='$content', url_db='$url_db', target='$target', disabled='$disabled' WHERE no=$no"; } } if(isset($_POST["submit_del"])){ $no = key($_POST[submit_del]); $mydbsql = "DELETE FROM newsline WHERE no=$no"; } if($error==""){ $mydbsql; $new_no = ""; $new_category = ""; $new_date = ""; $new_content = ""; $new_url_db = ""; $new_target = ""; $new_disabled = ""; } } ?> <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>無題ドキュメント</title> </head> <body> <?=$error ?> <form action="<?=$_SERVER['PHP_SELF']?>" method="post"> <?php $mydbsql = "select * from newsline"; while($mydb = mysql_fetch_array($rst)){ $no = $mydb["no"]; $category = $mydb["category"]; $date = $mydb["date"]; $content = $mydb["content"]; $url_db = $mydb["url_db"]; $target = $mydb["target"]; $disabled = $mydb["disabled"]; mb_convert_variables('UTF-8', 'EUC-JP', $category); mb_convert_variables('UTF-8', 'EUC-JP', $content); echo <<<EOT $no: $new_no: <input type="text" name="category[$no]" value="$category"> <input type="text" name="date[$no]" value="$date"> <input type="text" name="content[$no]" value="$content"> <input type="text" name="url_db[$no]" value="$url_db"> <input type="text" name="target[$no]" value="$target"> <input type="text" name="disabled[$no]" value="$disabled"> <input type="submit" name="submit_upd[$no]" value="変更"> <input type="submit" name="submit_del[$no]" value="削除"> <br> EOT; } ?> <br> <input type="text" name="new_category" value="<?=$new_category ?>"> <input type="text" name="new_date" value="<?=$new_date ?>"> <input type="text" name="new_content" value="<?=$new_category ?>"> <input type="text" name="new_url_db" value="<?=$new_url_db ?>"> <input type="text" name="new_target" value="<?=$new_target ?>"> <input type="text" name="new_disabled" value="<?=$new_disabled ?>"> <input type="submit" name="submit_add" value="追加"> </form> <br> <?php if($mydbsql>""){ echo "発行した:<br>$mydbsql"; } ?> </body> </html>

    • ベストアンサー
    • PHP
  • PHP+MySQLで複数のラジオボタンから値を取得

    初めまして。もしお力を貸していただけるならと思い質問させていただきます。 今、MySQLに登録したデータを修正できるようにするファイルを作成しておりまして、 IDを指定すれば、ラジオボタンに登録されているデータがcheckedされるようにしたいと 考えています。 【MySQL】 [hoge] id hogeA 0or1 hogeB 0or1 hogeC 0or1 【update.php】 <?php require ("../dbconnect.php"); $_REQUEST["id"] = 選択したIDの受け渡し; $id = $_REQUEST["id"]; $sql = sprintf ("SELECT * FROM hoge WHERE id=%d", mysql_real_escape_string ($id) ); $recordSet = mysql_query ($sql) or die (mysql_error()); $data = mysql_fetch_assoc ($recordSet); $checkedOK = null; $checkedNG = null; switch($data["hogeA"]){ case 0: $checkedOK = 'checked'; break; case 1: $checkedNG = 'checked'; } ?> <html> <head> <form method="post" id="updateForm" action="update.php" enctype="multipart/form-data"> <table> <tr> <th>hogeA</th> <td><label> <input type="radio" name="hogeA" id="hogeA01" class="style02" value="0" <?php echo (htmlspecialchars($checkedOK, ENT_QUOTES)); ?> /> OK</label> <label> <input type="radio" name="hogeA" id="hogeA02" class="style02" value="1" <?php echo (htmlspecialchars($checkedNG, ENT_QUOTES)); ?> /> NO</label></td> </tr> <tr> <th>hogeB</th> <td><label> <input type="radio" name="hogeB" id="hogeB01" class="style02" value="0" <?php echo (htmlspecialchars($checkedOK, ENT_QUOTES)); ?> /> OK</label> <label> <input type="radio" name="hogeB" id="hogeB02" class="style02" value="1" <?php echo (htmlspecialchars($checkedNG, ENT_QUOTES)); ?> /> NO</label></td> </tr> <tr> <th>hogeC</th> <td><label> <input type="radio" name="hogeC" id="hogeC01" class="style02" value="0" <?php echo (htmlspecialchars($checkedOK, ENT_QUOTES)); ?> /> OK</label> <label> <input type="radio" name="hogeC" id="hogeC02" class="style02" value="1" <?php echo (htmlspecialchars($checkedNG, ENT_QUOTES)); ?> /> NO</label></td> </tr> </head> </html> とした場合、当然ですがhogeA,hogeB,hogeCには同じ値が入ってしまいます。 hogeB,hogeCも同じ様にSWITCH文を書けば実装できると思うのですが、 foreach等を使って複数のラジオボタンを取得するいい方法があれば、 教えていただきたいです。 説明が不十分で申し訳ありません。もし快くお答えいただける方がいれば大変嬉しく思います。

    • 締切済み
    • PHP
  • javascript php フォームについて

    javascriptで作ったフォームをphpに送信したいのですが、上手く送信できません。 どのようにすれば上手く送信することができるでしょうか? 回答お願いします。 javascript側のソース <body> <form name="nform1" method="POST" action="./kaitou1.php" enctype="text/plain"> <p>問1</p> <p> (1)<input type="text" name="kaitouran11" size="20"> (2)<input type="text" name="kaitouran12" size="20"> (3)<input type="text" name="kaitouran13" size="20"> (4)<input type="text" name="kaitouran14" size="20"> </p> </form> <form name="nform2" method="POST" action="./kaitou1.php" enctype="text/plain"> <p>問2</p> <p> (1)<input type="text" name="kaitouran21" size="20"> (2)<input type="text" name="kaitouran22" size="20"> (3)<input type="text" name="kaitouran23" size="20"> (4)<input type="text" name="kaitouran24" size="20"> </p> </form> <form name="nform3" method="POST" action="./kaitou1.php" enctype="text/plain"> <p>問3</p> <p> (1)<input type="text" name="kaitouran31" size="20"> (2)<input type="text" name="kaitouran32" size="20"> (3)<input type="text" name="kaitouran33" size="20"> (4)<input type="text" name="kaitouran34" size="20"> </p> </form> <input type="button" value="送信" onClick="send()"> </body> php側のソース <body> <p>問1</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran11'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran12'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran13'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran14'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問2</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran21'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran22'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran23'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran24'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問3</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran32'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran33'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran34'], ENT_QUOTES, 'UTF-8')); ?> </p> </body>

    • 締切済み
    • PHP
  • php 送信されたフォームについて

    送信されたフォームの受け取る側のソースを書いたのですが、 <?php $i = 0; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; print('正解数'.$i./4'です'); ?> を付け加えるとエラーが表示されます。エラーの対象になっているのは print('正解数'.$i./4'です');らしいのですが、なぜエラーになるのかわかりません 回答お願いします。 以下ソースです。 <html> <head> <title>解答</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style type=""text/css""> #container{ width:1000 } #main{ width:500px; float:right; } #sidebar{ width:500px; float:left; } </style> </head> <body> <div id="container"> <div id="main"> <p>問題の解答</p> <p>問1</p> <p>(1)(2)(3)(4)</p> <p>問2</p> <p>(1)(2)(3)(4)</p> <p>問2</p> <p>(1)(2)(3)(4)</p> </div> <div id="sidebar"> <p><>あなたの解答<></p> <p>問1</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran11'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran12'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran13'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran14'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問2</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran21'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran22'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran23'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran24'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問3</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran32'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran33'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran34'], ENT_QUOTES, 'UTF-8')); ?> </p> </div> </div> <?php $i = 0; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; print('正解数'.$i./4'です'); ?> </body> </html>

    • 締切済み
    • PHP
  • フォームで送られてきたメールの内容が消える。

    PHP初心者です。 メールフォームを作成し送信すると、メールは届くのですが、 メールの内容★の部分が消えてしまっています。 名  前: ★★ タイトル: ★★ メルアド: ★★ 内  容: ★★ ソース <?php $name= htmlspecialchars($_POST['name'],ENT_QUOTES); $title= htmlspecialchars($_POST['title'],ENT_QUOTES); $email= htmlspecialchars($_POST['email'],ENT_QUOTES); $naiyo= htmlspecialchars($_POST['naiyo'],ENT_QUOTES); $to="aaa@bbb.co.jp"; $subject = "ASK"; $message=" 名  前: $name \n タイトル: $title \n メルアド: $email \n 内  容: $naiyo \n"; if(mail($to,$subject,$message)) { echo "Thank you, your email has been send."; } else { echo "Sorry but there is an error. Try again please."; } ?> どなたかアドバイスをお願いします。

    • ベストアンサー
    • PHP
  • PHPフォームからのMYSQL保存がマッチしない

    いつもお世話になります。 類似する質問も見つけられず、いろいろ試して悩んだ挙句、アプローチを変えてもう一度投稿することにしました。 発端は、下記のページです。 http://okwave.jp/qa/q8604578.html 問題は、phpmyadminからカラムまたはフィールドに入力したものは重複していればエラー表示されるのですが、PHPのフォームからMYSQLのデータベースに保存したもの(phpmyadmin上ではちゃんと登録されている)は重複とみなされず、エラーとして検出されません。 phpフォームからMYSQLのデータベースを呼び出してカラムまたはフィールド上に同じものがなければ保存、そうでなければエラー表示、といった形で重複させないプログラムを作成するつもりでした。 上記のページでご返信いただいたように、重複させないカラムにユニーク設定してみたのですが、問題は解決されませんでした。 文字コードが違うからと思ったのですが、MYSQL、PHPどちらもUTF-8で統一させています。 フォームからMYSQLへの保存時に問題があるのでは?と思うのですが、どのような形で修正すればうまくいくのか、わかりません。 どうか、知識の足りない私にご教授いただけないでしょうか? PHPの設定とMYSQLへの登録のプログラムは下記の通りです。 PHP・・・5.4.19 XAMPP・・・1.8.2 phpmyadmin・・・4.0.4.1 データベース文字コード(UTF-8) phpの文字コード(php.iniのdefault_characterをUTF-8に設定) <?php //データベースの接続設定 $DB_HOST = "localhost"; $DB_NAME = "○○"; $DB_USER = "○○"; $DB_PASS = "○○"; //データベースに接続する $conn = mysql_connect($DB_HOST,$DB_USER,$DB_PASS) or die("接続エラー"); mysql_select_db($DB_NAME) or die("接続エラー");        //データベース登録前にメール送信する $userID = $_POST['userID']; $password = $_POST['password']; $name = $_POST['name']; $mail1 = $_POST['mail1']; $userID = htmlspecialchars($userID); $password = htmlspecialchars($password); $name = htmlspecialchars($name); $mail1 = htmlspecialchars($mail1); $mail_sub = '登録を受け付けました。'; $mail_body = 'ご登録、誠にありがとうございました。'; $mail_body = html_entity_decode($mail_body,ENT_QUOTES,"UTF-8"); $mail_head = 'From:blowin@horae.dti.ne.jp'; mb_language('Japanese'); mb_internal_encoding("UTF-8"); mb_send_mail($mail1, $mail_sub, $mail_body,$mail_head); ?> <?php //デフォルトのタイムゾーンを日本に設定 date_default_timezone_set("Japan"); //フォーム情報をすべて受信 extract($_POST); //そのまま代入する形ではエラーが起きるため、isset関数を使ってエラー回避する if(isset($_POST['$userID'])){ $userID = cnv_dbstr($_POST['$userID']); } if(isset($_POST['$password'])){ $password = cnv_dbstr($_POST['$password']); } if(isset($_POST['$name'])){ $name = cnv_dbstr($_POST['$name']); } if(isset($_POST['$mail1'])){ $mail1 = cnv_dbstr($_POST['$mail1']); } //データを追加する $sql = "INSERT IGNORE INTO touroku(userID,password,name,email,date)"; $sql .= "VALUES( " ; $sql .= " ' " .$userID. " ', " ; $sql .= " ' " .$password. " ', " ; $sql .= " ' " .$name. " ', " ; $sql .= " ' " .$mail1. " ', " ; $sql .= " ' " .date("Y/m/d H:i:s") . " ' " ; $sql .= " ) " ; $res = mysql_query($sql,$conn) or die("データ追加エラー"); //SQLコマンド用の文字列に変換する関数 function cnv_dbstr($string){ //タグを無効にする $string = htmlspecialchars($string); //magic_quotes_gpcがOnの場合はエスケープを解除する if(get_magic_quotes_gpc()){ $string = stripslashes($string); } //SQLコマンド用の文字列にエスケープする $string = mysql_real_escape_string($string); return $string; } header('location:./testkanryou.php'); exit; ?> 大変申し訳ありませんが、どうか、よろしくお願い申し上げます。

    • 締切済み
    • PHP
  • 変数 php

    スーパーグローバル変数はそのままでは文字列扱いにならないのでしょうか? 下記のように書くと 「htmlspecialchars()は第一引数は文字列である必要があります。」と出てしまいます。 str_replace("たいとる",htmlspecialchars($_POST['title'] ,ENT_QUOTES),$files); 以下の構文(sql)は動きませんでした。 $stmt="select * from $_POST['title'] "; 両方とも、変数に置き換えて再度書き直すと正常に動きました。 例、 $title=$_POST['title']; str_replace("たいとる",htmlspecialchars($title,ENT_QUOTES),$files);

    • ベストアンサー
    • PHP