配列のキーとvalueをテーブルに書き込めますか

このQ&Aのポイント
  • 配列のキーとvalueをテーブルに書き込む方法を教えてください
  • テーブルにキーとvalueを同時に書き込むことは可能でしょうか
  • 初心者ですが、配列のキーとvalueをテーブルに書き込む方法を教えてください
回答を見る
  • ベストアンサー

配列のキーとvalueをテーブルに書き込めますか

いつもお世話になっております。 下記方法で 配列のデータのみinsertすることができました。 foreach($b as $Key =>$Value){ $sql ="INSERT INTO temp_memo (stylecode) VALUES ('{$Value}')"; mysql_query($sql); } テーブルには key と stylecodeの二つのフィールドがあります。 上記の方法だと 下記 value のみのinsertです。 key stylecode 0   りんご 0   みかん 0   いちご key も同時に テーブルに書き込むことは 可能でしょうか。 いろいろ検索してみましたが 見つかりませんでした。 初心者です。 どうかよろしくお願いいたします。

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

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

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

もし本当に「key」というカラム名を使っているのであれば 予約語なのでエラーになっている可能性はありますね >$sql ="INSERT INTO temp_memo (key, stylecode) VALUES ('{$Key}', '{$Value}')"; $sql ="INSERT INTO temp_memo (`key`, `stylecode`) VALUES ('{$Key}', '{$Value}')"; 的な処理が必要になると思います。 (ふつうは予約語をカラム名には使いませんが・・・)

maki_peko
質問者

補足

ありがとうございました。 うまくいきました。 見ようみまねで やっているもので 予約語をカラムにしておりました。 カラム名変更しました。 本当にありがとうございました。

その他の回答 (2)

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.2

>返り値が空でしたとデータが入ってきませんでした。 とりあえず mysql_query($sql); は mysql_query($sql) or die(mysql_error()); としてください(最低でもデバッグ時はこうしておくこと)。 ちなみに、keyという列は文字列型ですか?数値型ですか?(数値型であれば引用符で括ってはいけません)。また文字列型(stylecodeはそうですよね)はエスケープしてください。 $sql = sprintf("INSERT INTO temp_memo (key, stylecode) VALUES (%d, '%s')", $Key, mysql_real_escape_string($Value)); それ以前にMySQL関数はすでに非推奨なので、今から書くコードで使うべきではないと思いますが・・・

maki_peko
質問者

補足

いつもアドバイス本当にありがとうございます。 デバック時および 非推奨の件 今から勉強します。 ネットと本とで ど素人が 見よう見まねでやっているもので お恥ずかしい限りです。 これからもどうぞよろしくお願いいたします。

  • t_ohta
  • ベストアンサー率38% (5078/13272)
回答No.1

$sql ="INSERT INTO temp_memo (key, stylecode) VALUES ('{$Key}', '{$Value}')";

maki_peko
質問者

補足

foreach($b as $Key =>$Value){ $sql ="INSERT INTO temp_memo (key, stylecode) VALUES ('{$Key}', '{$Value}')"; mysql_query($sql); } 早々のご回答ありがとうございます。 上記で試してみましたが 返り値が空でしたとデータが入ってきませんでした。 テーブルの作り方とかが おかしいのでしょうか。 すみません。よろしくお願いいたします。

関連するQ&A

  • アクセスの2つのテーブルから重複しないものを抜き出す方法について

    アクセスの2つのテーブルから重複しないものを抜き出す方法について 例えば テーブル Aには ID   価格    商品   1  200    りんご   2  150    みかん   3  180    りんご   4  230    いちご テーブル Bには   1  150    みかん   2  180    りんご とあった場合 A-B のクエリーを実行して   1  200    りんご   2  230    いちご という結果を得たいのですが、どのようにすれば出来るのでしょうか よろしくお願いします。

  • チェックボックスで複数選択した値をSQLへ

    次のような入力フォームから、SQLのテーブルに登録します。 <?php function connect() { return new PDO("mysql:dbname=★★★;host=★★★","★★★","★★★", array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`")); } $pdo = connect(); if (@$_POST['submit']) { $hoge = $_POST['hoge']; if (!$error) { $pdo->query("INSERT INTO ★(hoge) VALUES('$hoge')"); header('Location: example.php'); exit(); } } ?> <form action="insert.php" method="post"> <input type="checkbox" name="hoge[]" value="りんご"/>りんご<br> <input type="checkbox" name="hoge[]" value="みかん" />みかん<br> <input type="checkbox" name="hoge[]" value="いちご" />いちご <input class="submit" type="submit" name="submit" value="登録"> </form> これで、例えば「りんご」と「みかん」をチェックして登録ボタンを押すと 受け取りのexample.phpにはArrayと表示され、SQLに反映されません。 よい方法があったら教えてください。

    • ベストアンサー
    • PHP
  • DOSプロンプトから一度に登録させる方法

    WindowsXPに Oracle10gの無料版が入っています。 テーブルは既に作成しているのですが、データをインポートさせたく SQLを列記してDOSプロンプトから一度に登録させたいのですが、どのようにコマンドすればよいのでしょうか? sqlplusでログイン create table yaoya ( namae varchar2 (100) shohin varchar2 (100) num number (8,2) ); でテーブル作成している。 test.sqlを以下のように作成しました。 insert into yaoya (namae, shohin, num) values ('田中', 'りんご', 10); insert into yaoya (namae, shohin, num) values ('田中', 'みかん', 8); insert into yaoya (namae, shohin, num) values ('田中', 'バナナ', 15); insert into yaoya (namae, shohin, num) values ('伊藤', '梨', 12); insert into yaoya (namae, shohin, num) values ('伊藤', 'イチゴ', 20); insert into yaoya (namae, shohin, num) values ('伊藤', 'メロン', 1); insert into yaoya (namae, shohin, num) values ('松田', 'スイカ', 3);

  • insert文等で「`」の有無で失敗するテーブルとしないテーブルがある。

    XAMPP(winXP、PHP4)を使っています。 Aのテーブルでは $query= "insert into table (a,b,c,d) values('1','2','3','4')"; $result = mysql_query($query); でデータが追加されるのに、Bのテーブルでは失敗しました。 今日ずっと何が間違っているのかわからなかったのdですが、 $query= "insert into table (`a`,`b`,`c`,`d`) values('1','2','3','4')"; $result = mysql_query($query); とすると成功しました。 なぜAのテーブルでは「`」が無くても成功したのに、Bのテーブルでは必要なのでしょうか。 宜しくお願いします。

    • ベストアンサー
    • MySQL
  • access テーブル結合の逆?

    Access2003 お世話になります。SQLで以下のようなデータを取得する場合、上手い方法はあるのでしょうか。なんだかとても簡単な事のような気がするのですが…… テーブルA: ---品名--- りんご みかん もも いちご テーブルB: ---品名--- りんご もも このテーブルBに入力されているレコードをテーブルAから"除外"して、結果として「みかん」と「いちご」だけが欲しいのです。 テーブルBのレコードが少なければ、直接 品名<>"りんご" とか書いてもいいのかもしれませんが、結合のようなSQLで一発でできてしまったりしないでしょうか。 access上で可能なスマートな方法があれば教えていただきたいです。 よろしくお願いいたします。

  • 【JavaScript配列のソート】2つのキーで

    JavaScriptのsort()を使用して次の並べ替えをしたいと思っています。 key1, key2, data, data 5/5 , 5/4 , リンゴ, 110 5/3 , 5/6 , バナナ, 130 5/7 , 5/2 , ミカン, 110 5/3 , 5/2 , イチゴ, 150 この配列をkey1を昇順でかつkey2も昇順とし並び変えたいのです。 key1, key2, data, data 5/3 , 5/2 , イチゴ, 150 5/3 , 5/6 , バナナ, 130 5/5 , 5/4 , リンゴ, 110 5/7 , 5/2 , ミカン, 110 str.sort(); これだとkey1のみでソートされてしまいますので、条件を複数指定したいのですがいい方法はないでしょうか? 結果はweb(テーブル等)に表示するのではなく、配列変数のままで獲得したいと思っています。 google apps のスプレッドシート内でスクリプトとして使用したいと思っています。 かなり調べたのですがどれも1項目(key1)のみの検索しかヒットしませんでした。 よろしくお願いします。

  • 一つのテーブルの複数のフィールドから抜き出す方法について

    一つのテーブルの複数のフィールドから抜き出す方法について 例えば下記のようなテーブルがあったとします。       1     2     3     4 A商店  りんご   みかん   バナナ B商店  みかん   イチゴ   くり    パイナップル C商店  イチゴ   パイナップル バナナ D商店  イチゴ   バナナ   りんご のようなテーブルがありフィールド1~4いずれかにみかんを含むクエリーを作成し次のような結果をACCESSで作成したいのですが、簡単な方法はあるのでしょうか?       1     2     3     4 A商店  りんご   みかん   バナナ B商店  みかん   イチゴ   くり    パイナップル よろしくお願いいたします。 尚、使用しているデータベースはACCESS2000です。

  • 配列の初歩2

    PHP+MYSQLに挑戦しているプログラミング入門者です。、 昨日 http://oshiete1.goo.ne.jp/qa3720566.html に続き全く初歩的な質問で申し訳ございません。 知識が乏しいため本を読んでもわからず、 いろいろ試してもだめなため、再度質問させていただきます。 t1 +-+-+ |n|n2| +-+-+ |1|2| +-+-+ |3|4| $bat=array(5=>6,6=>7,7=>8); $sql = "insert into t1 values(5,number)"; なら |5|5| $sql = "insert into t1 values(5,'{$bat[5]}')"; なら |5|6| が追加されますが $sql = "insert into t1 values(5,'{$bat[number]}')"; だと |5|0| となってしまいます。これを |5|6| とするにはどうしたらよいのでしょうか 何卒よろしくお願いします。

    • ベストアンサー
    • PHP
  • 閉包テーブルのノードの移行について

    このジャンルでお願いします。 次のようなテーブルで CREATE TABLE IF NOT EXISTS item ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(32) NOT NULL, PRIMARY KEY(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO item (name) VALUES ('item1'); INSERT INTO item (name) VALUES ('item2'); INSERT INTO item (name) VALUES ('item3'); INSERT INTO item (name) VALUES ('item4'); INSERT INTO item (name) VALUES ('item5'); INSERT INTO item (name) VALUES ('item6'); CREATE TABLE IF NOT EXISTS treepath ( ancestor_id int(11) NOT NULL, descendant_id int(11) NOT NULL, FOREIGN KEY (ancestor_id) REFERENCES item(id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (descendant_id) REFERENCES item(id) ON DELETE CASCADE ON UPDATE CASCADE, PRIMARY KEY(ancestor_id, descendant_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO treepath (ancestor_id, descendant_id) VALUES (1, 1); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (1, 2); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (1, 3); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (1, 4); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (1, 5); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (1, 6); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (2, 2); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (2, 4); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (2, 5); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (2, 6); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (3, 3); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (4, 4); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (4, 6); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (5, 5); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (6, 6); item1┬item2    │ ├item4    │ │  └item6    │ └item5    │    └item3 を item1┬item2    │ │      │ └item5    │    └item3      └item4        └item6 のようにitem4以下のノードをitem3の下に移したいのですが、 その場合のtreepathテーブルの更新はどのようなSQL文にすれば良いのでしょうか?

    • ベストアンサー
    • MySQL
  • 片方のテーブルに存在しないレコードの抽出する方法

    shop1テーブルに存在して、shop2テーブルに存在しないレコードを抽出させたいのですが、 どのようにSQLを書けば良いのでしょうか? よく知らないのですが、SQLでは結合?というジャンルの手法ですか? shop1テーブル nama num みかん 10 りんご 20 なし 30 いちご 50 shop2テーブル name num みかん 55 りんご 44 なし 33

専門家に質問してみよう