• 締切済み

phpでデーターベース編集

phpを独学し始めた初心者です。 よろしくお願いします。 以下のphpファイルを実行すると エラーが出ないにもかかわらず、 データーベースの表示で確認すると 『item_name』に『もも』という文字が入っていません。 その他はphp通りデーターが挿入されます。 なぜでしょうか? (環境)------------------------------------- phpエディターでphpファイルをつくり phpMyAdminでデーターベースを編集してます。 ローカルホストです。 --------------------------------------------- <?php mysql_connect('localhost', 'root', '') or die(mysql_error()); mysql_select_db('mydb') or die(mysql_error()); mysql_query('SET NAMES UTF8'); mysql_query ('INSERT INTO my_items SET maker_id=1, item_name="もも", price=480, keyword="缶詰,ピンク,甘い", sales=0, created="2010-10-10", modified="2012-05-05"') or die(mysql_error()); echo 'データー挿入完了'; ?> どうぞよろしくお願いします。

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

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

phpMyAdminからのデータの投入はできるのでしょうか? $sql='INSERT INTO my_items SET maker_id=1, item_name="もも", price=480, keyword="缶詰,ピンク,甘い", sales=0, created="2010-10-10", modified="2012-05-05"' として print $sql; で表示したとききちんと「もも」は表示されますよね? 逆に、「もも」を「momo」など英字にしても投入できませんか?

hayaken73
質問者

お礼

色々ありがとうございました。

hayaken73
質問者

補足

アドバイスありがとうございます。 まだ独学1ヶ月にも満たない初心者なので、理解が浅い点があると 思いますが、よろしくお願いします。 (1) >phpMyAdminからのデータの投入はできるのでしょうか? phpMyAdminの(SQL)タグから 'INSERT INTO my_items SET maker_id=1, item_name="もも", price=480, keyword="缶詰,ピンク,甘い", sales=0, created="2010-10-10", modified="2012-05-05"'; を実行しました。⇒データーは入ってました。 また上記の"もも"を"momo"として実行しても投入されます。 (2) >$sql='INSERT INTO my_items SET maker_id=1, item_name="もも", price=480, >keyword="缶詰,ピンク,甘い", sales=0, created="2010-10-10", modified="2012-05-05"' >として > >print $sql; >で表示したとききちんと「もも」は表示されますよね? まず疑問ですが、このご指示はphpMyAdminでは行なわなくてもいいんですよね? (自分には上記をphpMyAdminで行う方法がわからないので、以下の通りとしました) PHPエディタにて新規にファイルを作成(test02.php)し、          ↓ <?php $sql='INSERT INTO my_items SET maker_id=1, item_name="もも", price=480, keyword="缶詰,ピンク,甘い", sales=0, created="2010-10-10", modified="2012-05-05"'; print $sql; ?>          ↓ 実行すると・・・          ↓ (結果) --------------------------------------------------------------------------------- INSERT INTO my_items SET maker_id=31, item_name="もも", price=480, keyword="缶詰,ピンク,甘い", sales=0, created="2010-10-10", modified="2012-05-05" --------------------------------------------------------------------------------- と表示が出ます。 ご指示どおりしているか心配ですが、よろしくお願いします。

  • rtgp
  • ベストアンサー率100% (4/4)
回答No.1

item_nameの型は何になっていますか? 例えば、数値型を表すINTとかになっていると文字列は入りません。 型はphpMyAminで、左のテーブル一覧からmy_itemsをクリックして、構造というタブを見れば書いてあります。 もし、それが問題であれば、文字列を入れることのできる型にすれば問題なく動作するかと思います。 (TEXT型やVARCHAR型など)

hayaken73
質問者

お礼

アドバイス本当にありがとうございました。

hayaken73
質問者

補足

アドバイスありがとうございます。 型を確認したところ、 item_name:TEXT となっておりました。他の設定は参考までに 以下の通りです。 ・デフォルト値:なし ・照合順序:utf8_general_ci ・その他:全て空欄 です。 よろしくお願いします。

関連するQ&A

  • (phpeditor)→(phpMyadmin)

    phpを独学し始めた初心者です。 よろしくお願いします。 以下のphpファイルを実行するとエラーが出ない にもかかわらず、データーベースの表示で確認すると 日本語のみがすっぽり空いた状態で、その他はphp通り データーが挿入されます。 つまり 『item_name』に『もも』 『keyword』に『缶詰,ピンク,甘い』 という文字が入りません。 (ともに状態はTEXTになっています。) なぜでしょうか? (環境)------------------------------------- phpエディターでphpファイルをつくり phpMyAdminでデーターベースを編集してます。 ローカルホストです。 --------------------------------------------- <?php mysql_connect('localhost', 'root', '') or die(mysql_error()); mysql_select_db('mydb') or die(mysql_error()); mysql_query('SET NAMES UTF8'); mysql_query ('INSERT INTO my_items SET maker_id=1, item_name="もも", price=480, keyword="缶詰,ピンク,甘い", sales=0, created="2010-10-10", modified="2012-05-05"') or die(mysql_error()); echo 'データー挿入完了'; ?> どうぞよろしくお願いします。

    • ベストアンサー
    • MySQL
  • phpでのSQLでのデータの追加方法

    phpでのSQL実行に関して、下記のデータを追加するコードがあります。 mysql_query('INSERT INTO my_items SET maker_id=1, item_name="もも", price=210, keyword="缶詰,ピンク,甘い", sales=0, created="2010-08-01", modified="2010-08-01"') or die(mysql_error()); echo 'データを挿入しました'; 私は。それを INSERT INTO (フィールド名) VALUES(値) のSQL文で実行したいのですが、その方法が分かりません。 よろしければ、それを実行するコードを教えてください。お願いします。

    • ベストアンサー
    • PHP
  • phpでmysqlのデータがupdateできません。

    仕様Apache2.0 PHP5.1.6 MySQL5.0.27 です。 以下の通りです。どこがだめですか? <FORM method="POST" action="order_regist.php"> <INPUT type="hidden" name="id" value="<?=$id?>"> <INPUT type="hidden" name="order_day" value="<?=$order_day?>"> <INPUT type="hidden" name="order" value="依頼あり"> <INPUT type="submit" value="同意して作業を依頼"> </FORM> 上記を次ページへ送信 以下次ページ /* MySQL DB接続情報の設定 DB名/ユーザー名/パスワード */ define("DB_NAME", "*****"); define("DB_USER", "*****"); define("DB_PASS", "*****"); /* リクエストデータの取得 */ $id = $_REQUEST["id"]; $order_day = $_REQUEST["order_day"]; $order = $_REQUEST["order"]; /* MySQLに接続 */ $link = mysql_connect("localhost", DB_USER, DB_PASS) or die("MySQLとの接続に失敗しました。"); /* 接続データベースを選択 */ mysql_select_db(DB_NAME) or die("データベースとの接続に失敗しました。"); /* クライアントのキャラクタセットを変更 */ mysql_query("SET NAMES ujis") or die( "クエリーの実行に失敗しました" ); /* データを更新するクエリーを設定 */ $query = "UPDATE all_cleaning_user SET order = '" . $order . "', order_day = '" . $order_day . "' WHERE id = " . $id; /* データベースにクエリーを実行 */ mysql_query($query) or die("クエリーを実行できませんでした。"); /* MySQLより切断 */ mysql_close($link); クエリーを実行できませんでしたのエラーが出ます。なぜですか?

    • ベストアンサー
    • PHP
  • PHPとMySQLで配列で検索する方法

    プログラミング初心者です。 PHPとMySQLでデータベースを作成しています。 配列に格納したデータを既に登録してあるデータに参照して、日付と題名が同じものは登録しないようにしたいと思います。 以下がソースなのですが、2行目でエラーがでてしまいます。そうすればよいかご教授お願いします。 for($j=1; $j<$i; $j++){ $query ="select * from data where date=" . $date2[$j]; $result = mysql_query($query) or die(mysql_error()); $query2 ="select * from data where sub=" . $sub[$j]; $result2 = mysql_query($query2) or die(mysql_error()); if(mysql_num_rows($result) != 0 && mysql_num_rows($result2) != 0){ //登録しない } else{      //データベースに登録

    • 締切済み
    • PHP
  • PHP+MySQLで文字化けします

    PHPでMySQLに接続して以下のように テーブルの作成・そのテーブルにInsertをすると文字化けします。 PHPサーバーの文字コードはEUC-JP、MySQLの文字コードはlatin1です。 PHPのバージョンは5.04でMySQLのバージョンは4.1.20です。 無料レンタルサーバーなので詳細な設定は変更できません。 <?php // データベースに接続し、選択する mb_language('Japanese'); mb_internal_encoding('UTF-8'); mb_http_output('UTF-8'); $link = mysql_connect('localhost',"user","password") or die('Could not connect: ' . mysql_error()); echo 'Connected successfully'; mysql_select_db('user') or die('Could not select database'); mysql_query("SET NAMES UTF-8",$link); // SQL クエリを実行する $name = 'test'; $query = "CREATE TABLE IF NOT EXISTS `$name` ( `id` varchar(50) primary key, `name` varchar(50), `pw` varchar(50) );"; $result = mysql_query($query) or die('Query failed: ' . mysql_error()); $query = "INSERT INTO $name (id, name) VALUES('test', 'テスト');"; $mojicode = mb_detect_encoding($query); $query = mb_convert_encoding($query, "UTF-8", "$mojicode"); $result = mysql_query($query) or die('Query failed: ' . mysql_error()); // HTML に結果を出力する echo "<table>\n"; while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { echo "\t<tr>\n"; foreach ($line as $col_value) { echo "\t\t<td>$col_value</td>\n"; } echo "\t</tr>\n"; } echo "</table>\n"; // 結果セットを開放する mysql_free_result($result); // 接続を閉じる mysql_close($link); ?> まだまだPHP、MySQL共に技術が未熟なため 説明不足な部分が多々あるかと思いますがご教授お願いします。

    • ベストアンサー
    • PHP
  • データベースが更新されない

    MySQLを使ってフィールドにid、name、age、genderを持つデータベースを作りました。idは、主キーでauto_incrementです。中身は空です。 ここにPHPで <?php $conn = mysql_connect("localhost", "user", "pass") or die("MySQLに接続できません"); mysql_query("SET NAMES 'sjis'", $conn); mysql_select_db("sample4", $conn); mysql_query("INSERT INTO sample4 (id,name,age,gender) VALUES ('田中',18,1)", $conn); mysql_query("INSERT INTO sample4 (id,name,age,gender) VALUES ('鈴木',24,1)", $conn); mysql_query("INSERT INTO sample4 (id,name,age,gender) VALUES ('加藤',20,0)", $conn); mysql_close($conn); echo "初期化終了<BR>"; ?> をブラウザ上で実行したんですが、MySQLには接続でき、エラーもなく初期化完了とは出るんですが、MySQLで中身を確認してみると、 mysql> select * from samplet4; Empty set (0.00 sec) と出て空の状態です。何故でしょうか・・・。 よろしくお願いします。

  • MySQL, PHP をインストール後、データベースにアクセスできません。

    自宅で使っている Windows Vista に ・Apache 2.2.8 ・PHP 5.2.6 ・MySQL 5.0.45 ・PHPMyAdmin 2.11.4 をインストールしました。 それぞれがインストールされたことは確認でき、 PHPMyAdmin でテーブルを作成、インポートなども出来たのですが、 PHP からデータベースにアクセスできずに困っています。 phpinfo(); などは表示されるのですが、 いざデータベースにアクセスしようとすると出来ず、PHPのエラーも表示されません。 $host = 'localhost'; $db_name = 'hoge'; $user = 'root'; $pass = '***'; $con = mysql_connect($host, $user, $pass) or die ("cannot connect DB"); mysql_select_db($db_name,$con) or die ("cannot select DB"); という記述以降に書かれた部分は実行されず、それ以前の部分のみ表示されます。 error_reporting(E_ALL); を記述していても何も表示されないため、原因すら分かりません。 何か心当たりはありますでしょうか?

    • ベストアンサー
    • PHP
  • 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
  • mysqlのデータベースの内容をphpでだしたいのですが。。。

    初歩的な質問で、自分なりにネットで調べたり、DBに詳しい友人にも聞いたのですが、どうしてもできなかったため質問させていただきます。 【やりたいこと】 データベースに中の文字を変数として表示させたい 【結果】 「Resource id #3」とでる 【データベースの中身】(テーブル名 genre) genreid   genre 1     アクション 2      RPG 3     アドベンチャー ・       ・ ・       ・ 【作ったソース】 <?php mysql_connect('****','****','****'); mysql_select_db('****'); mysql_query("set character_set_client=utf8"); mysql_query("set character_set_connection=utf8"); mysql_query("set character_set_results=utf8"); $genre_name_sql = "select * from genre where genreid = 1"; $genre_name = mysql_query($genre_name_sql); echo $genre_name; ?> 私としてはこれで 「アクション」 と出したいのですが、何かが悪いのか出ません。 お忙しいところ恐縮ですが、 よろしくお願い致します。 (情報が足りない場合はおっしゃってください。。。)

    • ベストアンサー
    • MySQL
  • PHPの変数を使ったMYSQL条件検索について

    PHP初心者です。どなたか詳しい方ご教示下さい。かれこれ半日調べてもわかりません。 フォームに入力したキーワードを使って条件検索を行い、MYSQLに登録した必要なレコードを取り出す作業を行いたいのですが「Unknown column 'henkan' in 'where clause'」と出て表示されません。 カラムの方がINT型なら表示されるのですが、TXT型なら上記エラーが出ます。 色々調べたらインジェクション対策(?)で「'」と「”」の入れ方が悪く、「`」を変数の前後に入れれば良いかと思い試してみましたが「Parse error: syntax error, unexpected~」と出てエラーが出ます。 他にも色々「'」「"」の位置を変更して見ましたがエラーが出ます。どなたか詳しい方、お教え下さい。 よろしくお願い致します。 ・PHPプログラム <?php mysql_connect('localhost','root','') or die(mysql_error()); mysql_select_db('mydb'); mysql_query('SET NAMES UTF8'); $recordSet = mysql_query('SELECT * FROM manyu where syurui ='.$_POST['free']); $data = mysql_fetch_assoc($recordSet) or die(mysql_error()); echo $data['keyword']; ?> ・テーブルとカラム id syurui keyword ___ _________ __________ 6 henkan 変換 →「変換」と出てくる予定でした。