質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

3855閲覧

SQL保存でループ処理を行いたいです

tk5923

総合スコア12

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/01/19 02:27

編集2016/01/19 02:54

SQL保存でループ処理を行いたいのですが、下記ではうまく保存されません。
フォームで追加項目ボタンを押したら、フォーム項目が増え、項目の数だけ保存処理を行いたかったです。

id INT型 PRIMARY A_I無し
list text型

$list_0=$POST['list_0'];
...
...
...
...
for ($i=0; $i<=10; $i++) {
$list = "$" + "list_" + "$i";
$sql = "INSERT INTO data (id, list) VALUES ('$id', '$list')";
$result_flag = mysql_query($sql);
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2016/01/19 02:41

確認ですが、どういう形のデータを保存したいのでしょうか。
icham

2016/01/19 02:41

出来ればPHPの全体を提示する事をオススメします。
guest

回答3

0

可変変数を使いたいのかなと推測しました。

PHP

1for ($i = 0; $i <= 10; $i++) { 2 $list = "list_" . "$i"; 3 // わかりやすく記述 4 $sql = "INSERT INTO data (id, list) VALUES ('" . $i . "', '" . $$list . "')"; 5 // 元の記述の修正版 6 // $sql = "INSERT INTO data (id, list) VALUES ('{$i}', '{$$list}')"; 7 $result_flag = mysql_query($sql); 8}

可変変数のマニュアル

危険ですので入力値のエスケープもしてください。mysql_escape_string関数
ちなみにmysql_がつく関数は非推奨です。

投稿2016/01/19 04:08

icham

総合スコア559

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

aglkjgggさんのものと併せて、ですが

php

1$list = "$" + "list_" + "$i";

ここは

php

1$list = "$"."list_"."$i";

かな、と思います。

投稿2016/01/19 03:31

ao_love

総合スコア441

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

全文を見ていないので何とも言いづらいところです。
簡単な所だと2つ思い浮かびます。

  1. dataテーブルのidカラムにはプリマリキーが付いていますか?

プライマリキーが付いている場合は、
for文の中で$idの値は変化していませんので、
$idが重複することになり、1つめしかINSERTされません。
※またはPHP側での$idインクリメント忘れでしょうか?
idカラムプライマリーキーがついていてAUTO INCREMENTが指定されている場合、
INSERT文でidカラムを指定する必要はありません。
2. mysql_connect()でMySQLに接続していますか?

また、単純かつ連続的なINSERT文ですのでバルクインサートに対応する事も考えてみてはいかがでしょうか。

投稿2016/01/19 02:41

aglkjggg

総合スコア769

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問