• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPでのMYSQL操作について教えてください。)

PHPでのMYSQL操作についての質問

このQ&Aのポイント
  • PHPでMYSQLのデータを一覧表示し、フォームの内容を変更して反映させる方法について教えてください。
  • 現在は内容を変更してもエラーが表示されます。原因を教えてください。
  • 質問者はPHPでのMYSQL操作について困っています。変更した内容が反映されずエラーが表示される状態になっています。

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

  • ベストアンサー
  • marutone
  • ベストアンサー率40% (70/174)
回答No.1

UPDATE文のWHERE句の直前のカンマが不要です。

katsubonbon
質問者

お礼

無事に解決することができました。 すごく助かりました。本当にありがとうございます。

katsubonbon
質問者

補足

ご回答ありがとうございます。 カンマを取り除いてみましたが、変わらず「データ変更エラー」が表示されてしまいます。 他にも原因があるようです。 ご指摘ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 基本的なmysqlのDB操作につきまして

    PHPの初心者です。あまり上達せず、困っていました。 よろしくお願いします。 用件は、POSTからもらったデータをMysqlへ追加する操作です。 とある参考書に書いてあるように、 しても、エラーで追加されません。 ちなみに、$commentの箇所を省いて、nameとpasswordだけにすると ちゃんと追加されます。これが不思議なんです。 DBへのアカウントやパスは間違っていません。 PHPのバージョンは5です。 // データの文字コードを変換する関数 function cnv_dbstring{ XXXXXX変換するコードXXXXX } if (count($_POST) > 0) { $name = $_POST["name"]; $password = $_POST["password"]; $comment = $_POST["comment"]; // データが送信されたときはデータを追加する if (strlen($name) and strlen($password) and strlen($comment)){ // データを追加する $sql = "INSERT INTO xx_xxxx_usr(name, password, comment) VALUES( '".cnv_sqlstr(cnv_dbstring($name, $db_enc))."', '".cnv_sqlstr(cnv_dbstring($password, $db_enc))."', ".cnv_sqlstr(cnv_dbstring($comment, $db_enc)).") ;"; mysql_query($sql, $conn) or die("データ追加エラー"); ←このエラーが出ます。 echo "<p>追加されたデータのID:".mysql_insert_id($conn); } }

    • ベストアンサー
    • PHP
  • PHPからMySQLを操作

    お世話になっております。 PEAR::MDB2をインストールし、PHPからクエリーを発行してDBへデータを登録したく思っています。 しかし、「MDB2 Error: syntax error」というエラーがでてしまいます。 クエリーは間違っていないはずです。他のPCでの動作は確認できています。 プログラム /* foreach($str1 as $key => $value){ $sql = "INSERT INTO book_content(author, name, date, publish, path, content) VALUES('".cnv_sqlstr(cnv_dbstring($value, $db_enc))."', '".cnv_sqlstr(cnv_dbstring($str2[$key], $db_enc))."', '".cnv_sqlstr(cnv_dbstring($str3[$key], $db_enc))."', '".cnv_sqlstr(cnv_dbstring($str5[$key], $db_enc))."', '".cnv_sqlstr(cnv_dbstring($str4[$key], $db_enc))."', '".cnv_sqlstr(cnv_dbstring($str6[$key], $db_enc))."');"; // クエリを発行 $res =& $mdb2->query($sql); // 結果がエラーでないかどうかを常にチェック if (PEAR::isError($res)) { die($res->getMessage()); } } */ どなたかアドバイスお願いします。 PHPバージョン Version 5.2.10-2ubuntu6.3 Apacheバージョン 2.2.12-1ubuntu2.1 OS Linux ubuntu 2.6.31-16-generic

    • ベストアンサー
    • PHP
  • データベースの文字が???で表示される

    PHPによるwebアプリケーションスーパーサンプルという参考書のプログラム(p552)でどうしても実行できないものがあります。 やりたいことはMySQLに接続してデータを表示させるというものです。数字であるIDと年齢は表示されるのですが、文字である名前と出身地のところが「???」で表記されてしまいます。 何度も参考書のソースプログラムを見直したのですがどこが違うのか分かりません。以下は原因がありそうなコードの抜粋です。(抜粋なのでエラーと関係なさそうなコードは途中でも省略しています。) よろしくお願いします。 idはID、namは名前、preは出身地、agは年齢です。 //文字コード $enc_disp = "EUC-JP"; $enc_db = "EUC-JP"; //データの文字コードを変換する function cnv_enc($string, $to, $from){ //文字コードを変換する $det_enc=mb_detect_encoding($string, $from.",". $to); if($det_enc and $det_enc != $to){ return mb_convert_encoding($string, $to, $det_enc); } else{ return $string; } } //データを取り出す $sql="SELECT id,nam,pre,ag FROM table1 ORDER BY id"; $res=mysql_query($sql,$conn) or die("データ抽出エラー"); //取り出したデータを表示する echo "<table border=\"1\">"; echo "<tr>"; echo "<td>ID</td>"; echo "<td>名前</td>"; echo "<td>出身</td>"; echo "<td>年齢</td>"; echo "</tr>"; while($row=mysql_fetch_array($res,MYSQL_ASSOC)){ echo "<tr>"; echo "<td>".$row["id"]."</td>"; echo "<td>".cnv_enc($row["nam"], $enc_disp, $enc_db)."</td>"; echo "<td>".cnv_enc($row["pre"], $enc_disp, $enc_db)."</td>"; echo "<td>".$row["ag"]."</td>"; echo "</tr>"; } echo "</table>";

    • ベストアンサー
    • PHP
  • ODBCでデータ抽出エラー

    下記プログラムを実行すると、データ抽出エラーとなってしまいます。 <?php $dsn = "database_4"; $user = ""; $pass = ""; $enc_disp = "EUC-JP"; $enc_db = "SJIS"; function cnv_enc($string, $to, $from) { $det_enc = mb_detect_encoding($string, $from . ", " . $to); if ($det_enc and $det_enc != $to) { return mb_convert_encoding($string, $to, $det_enc); } else { return $string; } } $conn = odbc_connect($dsn, $user, $pass) or die("接続エラー"); $sql = "SELECT music_0_ID,大分類,日本語作曲家名,日本語曲名 FROM music ORDER BY music_0_ID"; $res = odbc_exec($conn, $sql) or die("データ抽出エラー"); echo "<table border=\"1\">"; echo "<tr>"; echo "<td>ID</td>"; echo "<td>大分類</td>"; echo "<td>日本語作曲家名</td>"; echo "<td>日本語曲名</td>"; echo "</tr>"; while ($row = odbc_fetch_row($res)) { echo "<tr>"; echo "<td>".odbc_result($res, "music_0_ID")."</td>"; echo "<td>".cnv_enc(odbc_result($res, "大分類"), $enc_disp, $enc_db)."</td>"; echo "<td>".cnv_enc(odbc_result($res, "日本語作曲家名"), $enc_disp, $enc_db)."</td>"; echo "<td>".odbc_result($res, "日本語曲名")."</td>"; echo "</tr>"; } echo "</table>"; odbc_close($conn); ?> デバッグすると、解決できるでしょうか?PHP5.3.6.0を使用しているため、Zend Debuggerをインストールすべきか迷っています。また、Apacheでなく、IIS7.0を使用しています。アンインストールして、XAMPPを使用すべきでしょうか?また、リモートデバッグをする場合、PCが2台(サーバとクライアント)必要になるのでしょうか?

    • ベストアンサー
    • PHP
  • 文字化け

    文字コードをEUCにて統一しているにも関わらず、 結果画面をみると下記のように化けてしまいます。 原因を教えて頂きたく思います。 よろしくお願いします。 データを表示する ID 名前 出身 年齢 1 ???? ??? 30 2 ???? ??? 20 <html> <head> <title>データを表示する</title> </head> <body> <h3>データを表示する</h3> <?php // 表示文字コード $disp_enc = "EUC-JP"; // データの文字コードを変換する関数 function cnv_dbstring($string, $enc) { // 文字コードを変換する $det_enc = mb_detect_encoding($string); if ($det_enc and $det_enc != $enc) { return mb_convert_encoding($string, $enc, $det_enc); return mb_convert_encoding($string, $enc, $det_enc); } else { return $string; } [DB接続部分省略] // 取り出したデータを表示する echo "<table border=\"1\">"; echo "<tr>"; echo "<td>ID</td>"; echo "<td>名前</td>"; echo "<td>出身</td>"; echo "<td>年齢</td>"; echo "</tr>"; while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { echo "<tr>"; echo "<td>".$row["id"]."</td>"; echo "<td>".cnv_dbstring($row["nam"], $disp_enc)."</td>"; echo "<td>".cnv_dbstring($row["pre"], $disp_enc)."</td>"; echo "<td>".$row["ag"]."</td>"; echo "</tr>"; } echo "</table>"; ?> </body> </html>

    • ベストアンサー
    • PHP
  • php5,MySQL5で文字化けが起こる

    環境:php5,MySQL5,XP MySQL5は、インストール時にsjisを指定。 php.iniもmbstring.internal_encoding = SJIS ドスプロンプトでSelect文を発行すると漢字で表示されます。 $dbtype = "mysql"; $sv = "localhost"; $dbname = "*****"; $user = "root"; $pass = "*****"; // 文字コード $enc_disp = "EUC-JP"; $enc_db = "EUC-JP"; // データの文字コードを変換する関数 function cnv_enc($string, $to, $from) { // 文字コードを変換する $det_enc = mb_detect_encoding($string, $from . ", " . $to); if ($det_enc and $det_enc != $to) { return mb_convert_encoding($string, $to, $det_enc); } else { return $string; } } // データベースに接続する $dsn = "$dbtype://$user:$pass@$sv/$dbname"; $conn = DB::connect($dsn); $sql = "SELECT * FROM A"; $res = $conn->query($sql); →この後、SQLの内容をIEで表示させると ”2 Web?? 002 ??????????????”の様に テーブルの中の漢字の部分だけが??????で表示されます。 ヒント、参考になるサイトなど、教えていただけると幸いです。

    • ベストアンサー
    • PHP
  • PHPボタンの判定が正常に機能しません

    phpによるWEBアプリケーションスーパーサンプルという参考書を用いて データ更新・削除プログラムを作成したのですが、データベースにつないだ後の作業として下記のソースを打ち込んだのですが削除・更新ボタンのどちらをを押しても削除ボタンの機能が優先されデータが削除されてしまいます。 一応単体テストとして更新・削除を各々別ソースで実行したときは動作できました。 申し訳ありませんがご指南お願いいたします。以下がソースです。 // 変更するデータを取得する if (count($_POST) > 0) { $id = $_POST["id"]; $dname = $_POST["dname"]; $teladdress = $_POST["teladdress"]; $mailaddress = $_POST["mailaddress"]; // データが送信されたときはデータを変更する if (strlen($id) and strlen($dname) and strlen($teladdress) and strlen($mailaddress)) { // データを変更する $sql = "UPDATE student SET dname = '".cnv_sqlstr(cnv_enc($dname, $enc_db, $enc_disp))."', teladdress = '".cnv_sqlstr(cnv_enc($teladdress, $enc_db, $enc_disp))."', mailaddress = ".cnv_sqlstr($mailaddress)." WHERE (id = ".cnv_sqlstr($id).");"; mysql_query($sql, $conn) or die("データ変更エラー"); } } // 削除するデータを取得する if (count($_POST) > 0) { $id = $_POST["id"]; // データが送信されたときはデータを削除する if (strlen($_POST["id"]) > 0) { // データを削除する $sql = "DELETE FROM student WHERE (id = ".intval($id).");"; mysql_query($sql, $conn) or die("データ削除エラー"); } }

    • 締切済み
    • PHP
  • php MySQL で、更新ボタンを押すと何回も書き込まれる

    いつもお世話になります。 PHP Ver.4.46 MySQL Ver.4.0.27 です。 フォームよりMySQLのデータベースへ書き込んでその内容を表示しようと思っています。 しかし、更新ボタンを押すと 、『情報を再送信する必要があります』と表示され、『はい』を押すと、 テキストボックスの内容が空白なのに同じデータが次々と書き込まれてしまいます。 過去ログを調べてよく似たようなものがあったので http://oshiete1.goo.ne.jp/qa3473685.html 試してみましたが、ダメでした。 //★★★★★★★★の行を追加してみました。 よろしくお願いいたします。 スクリプトは以下のようなものです。 <form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>"> <table border="1"> <tr> <td>お名前</td> <td><input type="text" name="g_name" size="30"></td> </tr> <tr> <td>メールアドレス</td> <td><input type="text" name="g_mail" size="30"></td> </tr> <tr> <td>メッセージ</td> <td> <textarea rows="5" cols="30" name="g_mes"></textarea> </td> </tr> <tr> <td colspan="2"> <input type="submit" value="書き込む" onClick="return confirm('書き込んで良いですか?')"> </td> </tr> </table> </form> <?php $sv = "localhost"; $dbname = "guestbook"; $user = "root"; $pass = "********"; // データベースに接続する $conn = mysql_connect($sv, $user, $pass) or die("接続エラー"); mysql_select_db($dbname) or die("接続エラー"); ?> <?php // POSTメソッドで送信された場合は書き込み処理を実行する if ($_SERVER["REQUEST_METHOD"] == "POST") { // フォームからデータを受け取る $g_name = cnv_dbstr($_POST["g_name"]); $g_mail = cnv_dbstr($_POST["g_mail"]); $g_mes = cnv_dbstr($_POST["g_mes"]); // 名前とメッセージが入力されていればデータの追加を実行する if (!empty($g_name) and !empty($g_mes)) { // データを追加する $sql = "INSERT INTO guestdata(g_name, g_mail, g_mes, g_date) "; $sql .= "VALUES("; $sql .= "'" . $g_name . "',"; $sql .= "'" . $g_mail . "',"; $sql .= "'" . $g_mes . "',"; $sql .= "'" . date("Y/m/d H:i:s") . "'"; $sql .= ")"; $res = mysql_query($sql, $conn) or die("データ追加エラー"); if ($res) { echo "<p>書き込みありがとうございました</p>"; //★★★★★★★★ header("Location:" . $_SERVER["PHP_SELF"] . ".php"); // $_SERVER["REQUEST_METHOD"]=""; //rqg 初期化 これではダメだった }else{ echo "<p>書き込み失敗</p>"; } } // 名前やメッセージが空白の場合はエラーメッセージを出力する else { echo "<p><b>お名前とメッセージを入力してください</b></p>"; } } // 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; } ?>

    • ベストアンサー
    • PHP
  • syntax error

    下記プログラムで2箇所syntax errorが出て、それぞれunexpected $conn、unexpected $rsが出ます。記法が誤っていますでしょうか? <?php $sv = "localhost"; $dsn = "database_4"; $user = ""; $pass = ""; $enc_disp = "EUC-JP"; $enc_db = "SJIS"; function cnv_enc($string, $to, $from) { $det_enc = mb_detect_encoding($string, $from . ", " . $to); if ($det_enc and $det_enc != $to) { return mb_convert_encoding($string, $to, $det_enc); } else { return $string; } } $conn = new COM("ADODB.Connection") $conn->open("Provider=SQLOLEDB;Data Source=$sv;Initial Catalog=$dsn;User ID=$user;Password=$pass;"); $rs = new COM("ADODB.Recordset") $sql = "SELECT * FROM music WHERE music_0_ID=1"; $rs->open($sql, $conn); echo "<table border=\"1\">"; echo "<tr>"; echo "<td>ID</td>"; echo "<td>大分類</td>"; echo "<td>日本語作曲家名</td>"; echo "<td>日本語曲名</td>"; echo "</tr>"; while (!$rs->eof) { echo "<tr>"; echo "<td>".$rs->fields["music_0_ID"]->value."</td>"; echo "<td>".cnv_enc($rs->fields["大分類"]->value, $enc_disp, $enc_db)."</td>"; echo "<td>".cnv_enc($rs->fields["日本語作曲家名"]->value, $enc_disp, $enc_db)."</td>"; echo "<td>".$rs->fields["日本語曲名"]->value."</td>"; echo "</tr>"; $rs->movenext(); } echo "</table>"; $rs->Close(); $conn->Close(); ?>

    • ベストアンサー
    • PHP
  • レンタルサーバーでphpmyadminの文字化け

    レンタルサーバーでMYSQLとPHPを使用したいのですが、PHPからINSERTした文字が、phpmyadminの画面だけで文字化けしてしまいます。 MySQLの文字コード設定は UTF-8 Unicode (utf8) で、照会順序も utf8_unicode_ci です。 INSERTする文字もINSERT直前に文字コードを変更し、確認したところutf8になっています。 コードは以下のとおり。 <?php $sql = mb_convert_encoding("$info","UTF-8"); $mojicode = mb_detect_encoding($info,mb_list_encodings()); print "$info の文字コードは $mojicode です。"; ?> PHPでMySQLからデータをSELECTで表示させた際は、文字化けせずに表示されます。 表示させるサイトの文字コードはutf-8です。 表示させる前に文字コードを変換させています。 スクリプトは以下のとおり。 <?php //文字コード $enc_disp = "utf-8"; $enc_db = "utf-8"; //データの文字コードを変換する関数 function cnv_enc($string, $to, $from) { //文字コードを変換する $det_enc = mb_detect_encoding($string, $from . "," . $to); if ($det_enc and $det_enc != $to) { return mb_convert_encoding($string, $to, $det_enc); } else { return $string; } } //データベースに接続 $conn=mysql_connect($sv, $user, $pass) or die("接続エラー"); mysql_select_db($dbname) or die ("接続エラー"); //データを取り出す //取りだすレコードの開始位置 $st=0; //取りだす最大レコード数 $lim=5; $sql = "SELECT number,date,info FROM info ORDER BY date DESC LIMIT $st,$lim;"; $res = mysql_query($sql, $conn) or die ("データ抽出エラー"); //mysql_query()関数でデータを取り出すSQLを実行する //取り出したデータを表示する echo "<table border=\"0\" id=table>"; while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { echo"<tr>"; echo"<td colspan='2'>".' ・ '.$row["date"].' / '.cnv_enc($row["info"], $enc_disp, $enc_db)."</td>"; echo"</tr>"; } echo "</table>"; ?> なお、表示する際、文字コードを変更する前にデータの文字コードを調べたところ、ASCIIとなっていました。 phpmyadminに入った際にASCIIになったのでしょうか? 解決策がわからず困っています。 どなたか解決策を教えていただけないでしょうか。 よろしくおねがいします。

    • ベストアンサー
    • MySQL
このQ&Aのポイント
  • A4用紙での印刷はスムーズに行えるのに、はがき印刷では詰まってしまう問題が発生している場合、解決方法はあるのでしょうか?
  • EPSON社製品のプリンターを使用している場合、A4用紙での印刷は問題なく行えるのに、はがき印刷では詰まってしまうという状況に悩まされている方も多いでしょう。
  • この問題について、EPSON社製品を使用してはがき印刷で詰まる場合の解決方法や対策についてまとめました。
回答を見る