人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHP、MySQLについて質問です。

MySQLにINSERTするために下記のように書きました。
$sql = "INSERT INTO ".$table."
(
word , meaning , phoniticsign
) VALUES (
'".$word."','".$meaning."','".$phoniticsign."'
)";

INSERTする項目が増減するので、配列に入れて、
配列の要素が増減したら、自動的にMySQLにINSERTする項目も増減するよう、
下記のように書きましたがうまくいきません。
$itemsS =array('word' , 'meaning' , 'phoniticsign');
$sql = "INSERT INTO ".$table."
(
foreach($itemsS as $xxxx)
{
$xxxx.',';
}
) VALUES (
'".$word."','".$meaning."','".$phoniticsign."'
foreach($itemsS as $xxxx)
{
'".$xxxx."',;
}
)";

「'".$word."','".$meaning."','".$phoniticsign."'」を上手に表現できないとか、
MySQLの構文がちゃんとわかってないとかいろいろあるとおもうので、私の例にこだわらず、「配列の要素が増減したら、自動的にMySQLにINSERTする項目も増減するよう」にするにはどうしたら良いか教えてください。

OSはVista、IE、Firefox、最新のXampp、PHP5、EclipsePDT2を使ってます。
基本的な質問で恐縮ですが、よろしくお願いします。

●質問者: taroemon
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:as firefox IE MySQL OS
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● Committeeman
●27ポイント

配列の1つめはテーブルのwordカラム、二つめはmeaning、三つめはphoniticsignにいれたいのなら下のようにします

$itemsS =array('word' , 'meaning' , 'phoniticsign');

$sql = "INSERT INTO " . $table . "(`word`,`meaning`,`phoniticsign`) VALUES ('" . join("','", array_pad($itemsS, 3, '')) . "')";

array_padは$itemsSの中身が1つや2つの場合に穴埋めする役目を果たしています

◎質問者からの返答

ご回答ありがとうございます。

array_padの使い方が参考になりました。


2 ● taramonera
●27ポイント ベストアンサー

テーブルにインサートする「フィールド」と「値」を

別の配列にセットした場合、下記のようにすればよいです。


$itemsS =array('word', 'meaning', 'phoniticsign');//フィールド

$valuesS=array($word, $meaning, $phoniticsign);//値


$sql = "INSERT INTO ".$table." (".

implode(",", $itemsS).

") VALUES ('".

implode("','", $valuesS).

"')";

◎質問者からの返答

コメント、ご回答ありがとうございます。

うまくいきました。


3 ● ホーエンハイム
●26ポイント

要素間にカンマを打たなければならないので、foreach より for 文を使った方がスマートです。以下の通り。

$itemsS =array('word' , 'meaning' , 'phoniticsign');
$n = count($itemsS);
$sql = "INSERT INTO {$table} (";
for ($i = 0; $i < $n; $i++) {
 if ($i == 0) $sql .= $itemS[$i];
 else $sql .= ", {$itemS[$i]}";
}
$sql .= ") VALUES ("
for ($i = 0; $i < $n; $i++) {
 if ($i == 0) $sql .= "'{$$itemS[$i]}'";
 else $sql .= ", '{$$itemS[$i]}'";
}
$sql .= ");"
◎質問者からの返答

ご回答ありがとうございます。

大変参考になりました。

やっぱりforでもいんですね。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ