• ベストアンサー

PHPでデータベースに正しく入力できない

別のプログラムで変数に値を渡して、その変数に入っている値(文字)をデータベースに入力するプログラムを作っています。 見ての通りCDのデータベースを作るプログラムです。 複雑なプログラムではないのですが 下記のようにプログラムを実行するとselect文で結果を確認した所 仮に繰り返し回数($t)が3だとして A、A-2、A-3、A-4 B、B-2、B-3、B-4 C、C-2、C-3、C-4 となるはずが、上記と同じデータが A、A-2、A-3、A-4 B、B-2、B-3、B-4 C、C-2、C-3、C-4 A、A-2、A-3、A-4 B、B-2、B-3、B-4 C、C-2、C-3、C-4 A、A-2、A-3、A-4 B、B-2、B-3、B-4 C、C-2、C-3、C-4 のように同じデータがそれぞれ2つずつ重複して入力されているのです。 2回目のprint文を見ると正しく表示されているのですが、データベースのほうは重複しているようです。 こちらに問題がないようなら変数受け渡しの部分も見せますので どなたか問題を見つけてくださらないでしょうか。お願いします。 $DBSERVER = "localhost"; //MySQLサーバ名 $DBUSER = "root"; //ログインユーザ名 $DBPASSWORD = ""; //パスワード $DBNAME = "cdb"; //データベース名 //MySQLに接続します $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); //MySQL読み込み時の文字コードを設定 mysql_query("set name sjis"); //データベースに接続します $selectdb = mysql_select_db($DBNAME); print("以下のデータを入力しました</BR>"); for($i=0;$i<$t-1;$i++){ $name=$cd[$i][0];/*array[]になるので入れ直し*/ $name=mb_convert_kana($name , "a","sjis");  $artist=$cd[$i][1]; $artist=mb_convert_kana($artist , "a","sjis"); $day=$cd[$i][2]; $record=$cd[$i][3]; $record=mb_convert_kana($record , "a","sjis"); $sql="insert into co2 values('0','$name','$artist','$day','$record')"; print("曲名: ".$name."</BR>"."歌手名: ".$artist."</BR>"."発売日: ".$day."</BR>"."レコード会社: ".$record."</BR></BR>"); mysql_query($sql); }

  • PHP
  • 回答数3
  • ありがとう数3

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

  • ベストアンサー
  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.3

ANo.1です。 制約とは大雑把に言うと、格納されるデータを制限するものです。 制約と言ってもいくつかあるわけですが、本件ではUNIQUE制約(一意性制約)を指しています。 何を以って一意であるとするかは設計次第です。 一意性制約 http://ja.wikipedia.org/wiki/%E4%B8%80%E6%84%8F%E6%80%A7%E5%88%B6%E7%B4%84 本題に入ります。 プログラムを何回も実行しているということですが、一回実行する度にテーブルの内容を確認しているのでしょうか。 改めて検証するために一旦テーブルを空にした後、一回だけプログラムを実行して結果を確認するのが良いと思います。蛇足ですが、ブラウザで検証しているのだと思いますので、くれぐれも更新ボタンを押すなどページの更新は行わないようにしましょう。

rety87
質問者

お礼

遅れてしまって申し訳ないです。 ありがとうございます。上記のUNIQUE制約で重複を防ぐことができました。

その他の回答 (2)

  • mpx
  • ベストアンサー率71% (149/209)
回答No.2

ソースの記載範囲内だけでは多重に同じデータを書きこむ部位はなさそうですので、他のスクリプトでここの部位を複数コールしたか、同じソフトを複数回繰り返したのだと思います。  同じデータが複数書込みができること自体が問題だとすると、それなりのテーブルの作り方にしておかないと問題がありそうですね。 テーブルで工夫が出来ないのなら、 merge(Oracle) か replace(MySQL) などで書き込むのも良いのでは?

rety87
質問者

お礼

遅れてしまって申し訳ないです。 replace文ですか。PRYMARYキーを曲名に設定すればいいのですかね。 ありがとうございます。試してみます。

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.1

仮に配列$cdがハードコーディングされているなどの理由で常に同じ内容であり、テーブルに制約を設けていないのであれば、この例ではプログラムを実行する度に同じデータが挿入されることになります。 実際にプログラムを何回か実行したということはありませんか?

rety87
質問者

お礼

早速の回答ありがとうございます。 テーブルに制約とはどのようなものなんでしょうか? プログラムは何回も実行していますが仮に配列$cdに前回と異なる値を格納したとしても同じように重複データが発生します。

関連するQ&A

  • PHP データベース データ更新

    データベース更新について お世話になっております。 データベースの更新ができず困っております。 ご教授いただければと思います。 PHPは初心者です。 コードは下記の用になっております。 form.php <?php ・ ・ ・ $member = $_GET[name]; ・ ・ ・ $query_member = sprintf("SELECT * FROM `member` WHERE ID='$member'"); $result_member = mysql_query($query_member, $link); if ($result_member) { $row = mysql_fetch_array($result_member); if ($row) { $m_id = $row['id']; $m_first_name = $row['first_name']; $m_last_name = $row['last_name']; $m_first_kana = $row['first_kana']; $m_last_kana = $row['last_kana']; $m_b_year = $row['b_year']; $m_b_month = $row['b_month']; $m_b_day = $row['b_day']; } } ?> <html> <body> <form action="complete.php?<?php print $m_id; ?>" method="POST"> <input type="text" name="<?php print $m_first_name; ?>" value="<?php print $m_first_name; ?>" /> <input type="text" name="<?php print $m_last_name; ?>" value="<?php print $m_last_name; ?>" /> <input type="text" name="<?php print $m_first_kana; ?>" value="<?php print $m_first_kana; ?>" /> <input type="text" name="<?php print $m_last_kana; ?>" value="<?php print $m_last_kana; ?>" /> <input type="text" name="<?php print $m_b_year; ?>" value="<?php print $m_b_year; ?>"> 年 <input type="text" name="<?php print $m_b_month; ?>" value="<?php print $m_b_month; ?>"> 月 <input type="text" name="<?php print $m_b_day; ?>" value="<?php print $m_b_day; ?>"> 日 <input type="submit" name="regist" value="編集"> </form> complete.php <?php ・ ・ ・ $m_id = $_GET[name]; ・ ・ ・ $first_name = mysql_real_escape_string($_POST['m_first_name']); $last_name = mysql_real_escape_string($_POST['m_last_name']); $first_kana = mysql_real_escape_string($_POST['m_first_kana']); $last_kana = mysql_real_escape_string($_POST['m_last_kana']); $year = mysql_real_escape_string($_POST['m_b_year']); $month = mysql_real_escape_string($_POST['m_b_month']); $day = mysql_real_escape_string($_POST['m_b_day']); $query_edit = sprintf("UPDATA `member` SET `first_name`='$first_name', `last_name`='$last_name' WHERE id='$m_id'"); $result_edit = mysql_query($query_edit, $link) or die(mysql_error()); if ($result_edit) { $msg = '編集しました。'; } else { $msg = '編集に失敗しました。'; } ?> <html> <body> <?php print $msg; ?> </body> </html> となっております。 $member = $_GET[name];はhttp://oshiete1.goo.ne.jp/qa5783266.htmlにてご教授いただいたので使用しています。 $result_edit = mysql_query($query_edit, $link) or die(mysql_error());でエラーが出力されたところデータの受け渡しができていませんでした。 どこを直せば良いのかわからず困っております。 お分かりの方がいらっしゃいましたらご教授お願いいたします。

    • ベストアンサー
    • PHP
  • PHPからデータベースへの登録について

    はじめまして。現在、仕事の関係でPHPのプログラムを勉強している者です。 早速ですが、質問させていただきます。 PHPで作成したフォームメールから別で用意したデータベースに 入力データを登録しようとしているのですが、エラーでうまく動作しません。 PHP側のコードミスもあるかもしれませんが、PHPを動作させているサーバーと データベースサーバーの文字コードが違う点も原因しているのでは?と調べている状況です。 フォームからのデータを送るPHP ⇒ Shift_jis PHPをアップしているWebサーバー ⇒ Shift_jis データベースサーバー ⇒ EUC-JP データベースへの接続は問題なく行えているようですので、 登録処理するコードの部分のみを書きます。(↓) ******************************************************************************** // データベースへの登録 $sql = "INSERT INTO FORM_DATA(DataNumber, Time, Name, Email, Area, Sex, Interest, Commnet, OS, IP) VALUES('$tsvcount', '$ymdhis', '$sender_name', '$mail_address', '$mail_area', '$mail_sex', '$mail_interest', '$mail_body', '$os', '$ip')"; $sql = mb_convert_encoding($sql, 'EUC-JP', 'sjis'); mysql_query("SET NAMES 'EUC-JP'"); $db_result = mysql_query($sql); print $sql; print $db_result; if (!$db_result) { exit('Error! データを登録できませんでした。'); } // データベースとの接続解除 $db = mysql_close($db); if (!$db) { exit('データベースとの接続を閉じれませんでした。'); } **************************************************************************** PHP&Webサーバーとデータベースの文字コードを統一すればいい話かもしれませんが、 事情により異なる文字コードの環境で開発しております。 上記の通り、データベースに送信するSQL文はmb_convert_encoding()で「EUC-JP」に変換し、 mysql_query($sql);でデータベースに送信している形です。 この状態で送信すると、エラーとなり送ったSQL文を処理してくれません。 文字コードの変換処理、コードの記述など何が原因なのか分からず困っています。 考えられる原因と、解決策があればご教授いただきたいです。 ちなみに私はPHPはもちろんプログラム自体もまだ経験が浅く、 基礎的なことも理解していないことがかなりあります。 その上でご説明いただけますと大変有難いです。 ではよろしくお願い致します。

    • 締切済み
    • PHP
  • php MySQL データ登録 方法

    以前もご質問させていただいたのですが、調べてもわからず困り果てています。 PHPとMySQLは初心者です。 PHPのバージョンはPHP 5.2.12 MySQLのバージョンは 5.1 サーバーはさくらインターネットを使用しています。 コードは下記のとおりになります。 form.php <html> <body> <form action="complete.php" method="POST"> <input type="text" name="id"> <input type="text" name="password"> <input type="text" name="first_name"> <input type="text" name="last_name"> <input type="text" name="first_kana"> <input type="text" name="last_kana"> <?php print '<select name="b_year">'."\n"; $start = date('Y') -40; $end = date('Y') -16; for ($i = $start; $i <= $end; $i++) { $selected = ""; $selected = ($_POST["b_year"] == sprintf('%04d',$i)) ? "selected":""; print '<option value="' . sprintf('%04d',$i) . '" '.$selected.'>' . sprintf("%04d",$i) . '</option>' . "\n"; } print '</select> 年' . "\n"; (文字数のためb_monthとb_dayを省略) ?> <input type="text" name="number"> <input type="text" name="height"> <input type="text" name="weight"> <input type="submit" name="regist" value="登録"> <input type="reset" name="reset" value="リセット"> </form> </body> </html> complete.php <?php ・ ・ $id = mysql_real_escape_string($_POST['id']); $password = mysql_real_escape_string($_POST['password']); $first_name = mysql_real_escape_string($_POST['first_name']); $last_name = mysql_real_escape_string($_POST['last_name']); $first_kana = mysql_real_escape_string($_POST['first_kana']); $last_kana = mysql_real_escape_string($_POST['last_kana']); $year = mysql_real_escape_string($_POST['b_year']); $month = mysql_real_escape_string($_POST['b_month']); $day = mysql_real_escape_string($_POST['b_day']); $number = mysql_real_escape_string($_POST['number']); $height = mysql_real_escape_string($_POST['height']); $weight = mysql_real_escape_string($_POST['weight']); ・ ・ $query_reg = sprintf("INSERT INTO `member` (`id`,`password`,`first_name`,`last_name`,`first_kana`,`last_kana`,`b_year`,`b_month`,`b_day`,`number`,`height`,`weight`) VALUES('$id',$password,'$first_name','$last_name','$first_kana','$last_kana',$year,$month,$day,,$number,$height,$weight"); $result_reg = mysql_query($query_reg, $link) or die(mysql_error()); if ($result_reg) { $msg = '登録しました。'; } else { $msg = '登録に失敗しました。'; } ・ ・ ・ ?> <html><body><?php print $msg; ?></body></html> とフォームを入力してデータベースに登録をするという流れです。 ご質問ですが、フォームに項目を入力して登録するとデータベースに登録がされます。 しかし、数字のみ($number、$height、$weight)の場所を未入力にするとエラーが出力されます。 エラーは 「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」です。 MySQLは下記のように設定しています。 id varchar(20) None password varchar(255) None first_name varchar(8) NULL last_name varchar(8) NULL first_kana varchar(8) NULL last_kana varchar(8) NULL b_year int(4) NULL b_month int(2) NULL b_day int(2) NULL number varchar(2) NULL height varchar(3) NULL weight varchar(3) NULL 未入力でもエラーが表示されずデータベースに入力されたとこだけ登録されるようにするにはどうしたらよろしいのでしょうか? お分かりの方がいらっしゃいましたらご教授お願いいたします。

    • ベストアンサー
    • PHP
  • phpのデータベースを使用したsqlのエラー

    すみません、PHPでデータベースを読み込み、SQLにて処理するプログラムを作成しているのですが、 再びエラーで止まってしまいまして、困っています。 データベースへのアクセスはできたようなのですが、SQLの処理の部分がエラーになっているのだと思われます。 --------------結果表示-------------- Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\site\search_criteria.php on line 70 @ エラー番号 : 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 'aaa,bbb,ccc FROM `test_table`' at line 1 @ ------------------------- -----------ソース------------- <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>-サイト -検索条件入力ページ-</title> </head> <body> <p>検索条件を入力してください</p><br> <?php # 変数定義関連 # mysqliの定義 global $mysqli; $mysqli = new mysqli('localhost', 'root', "", "****_db"); $link = mysql_connect('localhost', 'root', "", "****_db"); header("Content-type: text/html; charset=shift-jis"); // 文字化け防止 /* 文字セットを utf8 に変更します */ if (!$mysqli->set_charset("utf8")) { printf("処理1:文字コードのセットに失敗しました。: %s\n", $mysqli->error); } else { printf("処理1:文字コードセット-> %s\n", $mysqli->character_set_name()); } printf("<BR><BR>"); #配列定義 $job_name = array("配列定義"); $data = $_GET["job_opening_type"]; //データベースへの接続 if (!$link) { die("処理2:データベースへの接続失敗です。<BR>".mysql_error()); }else{ print("処理2:データベースへの接続成功!<BR><BR>"); } //データベースを選択 if (!mysql_select_db("****_db",$link)){ echo "処理3:データベース選択失敗<BR><BR>"; exit; }else{ echo "処理3:データベースの選択成功です。<BR><BR>"; } $query = file_get_contents("create.sql"); printf("処理4:クエリ->%s",$query); //SELECT文を実行 if($res = mysql_query($query,$link)){ echo "<BR>mysql_query失敗<BR>"; }else{ echo "<BR>mysql_query成功<BR>"; } //検索した結果を全部表示 line 70辺り→while($row = mysql_fetch_array($res,MYSQL_BOTH)){ echo "****=".$row["****"]; echo "****=".$row["****"]; echo "<BR>"; } echo "<BR>@<BR>エラー番号 : " . mysql_errno() . "メッセージ : " . mysql_error() ."<BR>@"; //データベースから切断 $mysqli->close(); echo "<BR><BR>処理5:データベースを切断しました。<BR>"; ?> <br> --------------------------------------------------<br> 最終更新日時<br> <p>&nbsp;</p> </body> </html> 内部のプログラムではなく、外部から読んでいるSQLの問題なのでしょうか? 外部にcreate.sqlというテキストを作成し、 SELECT aaa,bbb,ccc FROM `test_table` としています。 色々試しているのですが、うまくいきません、解決方法を教えて頂きたいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP DBデータ登録

    お世話になります。 PHPからDBにレコード登録についてお聞きしたいことがあり、ご質問させていただきました。 初心者のためご教授いただければと思います。 サーバーはさくらインターネット PHPは5.2.12 データベースはMySQL 5.1 <?php ・ ・ ・ $link = mysql_connect($DB_HOST,$DB_USER,$DB_PASS; mysql_select_db($DB_NAME,$link); mysql_set_charset('sjis',$link); $id = addslashes($_POST['id']); $password = addslashes($_POST['password']); $first_name = addslashes($_POST['first_name']); $last_name = addslashes($_POST['last_name']); $year = addslashes($_POST['year']); $month = addslashes($_POST['month']); $day = addslashes($_POST['day']); $query_reg = sprintf("INSERT INTO member (id,password,first_name,last_name,first_kana,last_kana,year,month,day) VALUES('$id','$password','$first_name','$last_name','$first_kana','$last_kana','$year','$month','$day')"); $result_reg = mysql_query($query_reg, $link); ・ ・ ・ ?> <html> <body> <form action="completion.php" method="POST"> <input type="text" name="id"/><br> <input type="text" name="password" /> <input type="text" name="first_name"/> <input type="text" name="last_name"/> <input type="text" name="first_kana" /> <input type="text" name="last_kana" /> <?php //年の入力 print '<select name="year">' . "\n"; $start = date('Y') -29; $end = date('Y') -16; for ($i = $start; $i <= $end; $i++) { $selected = ""; $selected = ($_SESSION["year"] == sprintf("%04d",$i)) ? "selected":""; print '<option value="' . sprintf("%04d",$i) . '" '.$selected.'>' . sprintf("%04d",$i) . '</option>' . "\n"; } print '</select> 年' . "\n"; //月の入力 print '<select name="month">' . "\n"; for ($i = 01; $i <= 12; $i++) { $selected = ""; $selected = ($_SESSION["month"] == sprintf("%02d",$i)) ? "selected":""; print '<option value="' . sprintf("%02d",$i) . '" '.$selected.'>' . sprintf("%02d",$i) . '</option>' . "\n"; } print '</select> 月' . "\n"; //日の入力 print '<select name="day">' . "\n"; for ($i = 01; $i <= 31; $i++) { $selected = ""; $selected = ($_SESSION["day"] == sprintf("%02d",$i)) ? "selected":""; print '<option value="' . sprintf("%02d",$i) . '" '.$selected.'>' . sprintf("%02d",$i) . '</option>' . "\n"; } print '</select> 日' . "\n"; ?> <input type="submit" value="登録"> </form> と記述しています。 ですが、調べたコードを自分の環境に変更しながら記述したのですが、データベースでは真っ白の状態で登録されてしまいます。 (真っ白の状態というよりフォームで入力した内容が表示されない。) phpファイルはShift-JISで記述しています。 どなたかお分かりの方がいらっしゃいましたら、ご教授お願いいたします。

    • ベストアンサー
    • PHP
  • PHPで「~」文字が化けてしまう

    VertrigoServ にて、WindowsXPへ  Apache 2.0.63  PHP 5.2.6  MySQL 5.0.51b  SQLite 3.5.9  PhpMyAdmin 2.11.7  SQLiteManager 1.2.0  Zend Optimizer 3.3.3  をインストールしました。  その後、PhpMyAdmin で既に用意されていた test データベースに  tbl という名のテーブルを用意し、二つのフィールドを作成しました。  データベース | 照合順序 ------------------------------------------  test | sjis_japanese_ci  フィールド | 種別 | 照合順序  ----------------------------------------  name | text | sjis_bin  name2 | text | sjis_japanese_ci  この name 、name2 フィールドに「~」という文字を挿入してみたら、  データの表示で「?」と表示されてしまいました。  「あ」と挿入しても「あ」と表示されます。  どうしたら「~」と表示されるようになるのでしょうか?  因みに、PhpMyAdminのログイン後のトップページでは、  MySQL の文字セット: UTF-8 Unicode (utf8)  MySQL の接続照合順序:utf8_unicode_ci  と表示されています。  これが問題なのでしょうか?

    • ベストアンサー
    • PHP
  • PHP cURLでPOSTした値が文字化けしてしまいます。

    PHPのcURL関数を使って、POSTしているのですが、POSTの値をUTF-8からSJIS-winに変換して送信したところ、受け側で文字化けしてしまいます。 ※ちなみに、ソースはUTF-8です。 ソース的には、ざっくり以下のような感じです。 $params = 'name=' . $name; $params .= '&kana=' . mb_convert_kana($kana, 'k'); $params = mb_convert_encoding($params, 'SJIS-win', 'UTF-8'); ・・・ $urlConnect = curl_init(); ・・・ curl_setopt($urlConnect, CURLOPT_POSTFIELDS, $params); $res = curl_exec($urlConnect); 受け側を見ると、 mb_detect_encoding($_POST['name']) が、「UTF-8」となっていました。 解決するポイントでも構いませんので、ご指導お願い致します。

    • 締切済み
    • PHP
  • phpによるデータベース操作について(MySQL)

    http://www.yc.tcu.ac.jp/~yamada/doc/mysql/win/0602.html のサイトを参考に以下のような「データベースの内容を表示させる」プログラムを書いたのですが、うまく表示されません。(webブラウザで確認したところまっさらなページで何も表示されません) ちなみに、私はレンタルサーバを借りており、その中で作成したデータベースにphpMyAdminにてテーブルやカラムの作成を行いました。以下のプログラムは「db_sample.php」という名前で保存(エンコード:utf-8)し、レンタルサーバーの公開しているフォルダ「httpdocs」にffftpにてアップロードしています。バージョンは、phpMyAdmin2.11.11.3と、php4.1?(最新の5.2よりひとつ前のもの) ここでは仮に ホスト名:aaa.com (←これは独自に作成したドメイン名でいいのかな?) ユーザー名:user パスワード:pass データベース名:db テーブル名:person とします。 ----------以下プログラム------------ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <title></title> </head> <body> <?php //データベースサーバ名の設定 $db_host = "aaa.com"; //ユーザ名の設定 $db_user = "user"; //パスワードの設定 $db_passwd = "pass"; //データベースサーバへの接続 $db = mysql_connect($db_host,$db_user,$db_passwd); //データベース名の設定 $db_name = "db"; //データベースの選択 mysql_select_db($db_name,$db); //SQL文の設定 $str_sql = "select * from person"; //SQL文の実行 $rs = mysql_query($str_sql,$db); //結果セット内の各レコードを順次参照し、連想配列に代入 while($arr_item = mysql_fetch_assoc($rs)) { //レコード内の各フィールド名と値を順次参照 foreach($arr_item as $key => $value) { //フィールド名と値を表示 print "[{$key}] = {$value}<br>\n"; } print "<br>\n"; } //データベースサーバへの接続の切断 mysql_close($db); ?> </body> </html> ------------------------------------------ わかる方いらっしゃいましたらご教授願います。

  • php pdo データベース

    前に書き込んだのが状況がわかったので再度書きます update.phpでGETで取った番号のデータを表示します 番号は主キーなので変更できないように表示のみにします update.phpのフォームをuptate2.phpに送ります <?php $ID = htmlspecialchars($_GET['番号']); $pdo = new PDO("mysql:dbname=db_test;host=localhost", "root", "admin"); $st = $pdo->prepare("SELECT * FROM tbl_test WHERE 番号=?"); $st->execute(array($ID)); $row = $st->fetch(); $NAME = htmlspecialchars($row['氏名']); $ADDR = htmlspecialchars($row['住所']); ?> <form action="update2.php" method="post"> 番号<br> <?php echo $ID ?><br> <input type="hidden" name="ID" value="<?php echo $ID; ?>"> 氏名<br> <input type="text" SIZE = "50" NAME="NAME" value="<?php echo $NAME ?>"><br> 住所<br> <input type="text" SIZE = "130"NAME="ADDR" value="<?php echo $ADDR ?>"><br> <input type="submit"> </form> アップデ-トphp update2.php <?php $pdo = new PDO("mysql:dbname=db_test;host=localhost", "root", "admin"); $st = $pdo->prepare("UPDATE tbl_test SET 氏名=?,住所=?WHERE 番号=?"); $st->execute(array($_POST['ID'],$_POST['NAME'], $_POST['ADDR'])); ?> レコードを修正しました。 今の現状 エラーが出ないでレコードを修正しました。と表示されるがレコードが修正されていない どこがいけないと思いますか?

    • ベストアンサー
    • PHP
  • phpでの文字エンコード

    携帯用のHPを作っているのですが、データベース文字コードがEUC-JPの為、一部の携帯では正常に表示されないでいます。 それで文字コードをShift_JISに変換してから出力したいのですが、 同時にmb_convert_kanaを使って全角カナを半角にしたいとも考えています。 個別に変換するなら、 $str = mb_convert_kana($row["~"],"k"); print mb_convert_encoding($str,"SJIS","EUC-JP"); で良いかと思うのですが、 ページ全体の出力文字を一気に変換する方法がわからないでいます。 そのような方法はあるのでしょうか? どうぞ宜しくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう