0

次のような配列を生成する複数選択ドロップダウンボックスがあります。

 array(3) { [0]=> string(1) "1" [1]=> string(1) "6" [2]=> string(1) "7" }

私が理解できないのは、複数選択ドロップダウンボックスを取得して更新を挿入し、データベースから、またはデータベースに選択する方法です。値が1つしかないようです

私の現在のコード状況はこれです->そして上記var_dumpは何ですか:

SELECT * FROM {table} WHERE canid=? AND categoryid=?", array($emailCheck['id'], $fields['Occupation'][0]));

更新ステートメント:これをどのように内包することができますか?

UPDATE {table} SET canid=?, categoryid=? WHERE canid=? AND categoryid=?", array($emailCheck['id'], implode(',', $fields['Occupation']));

私のDB構造は次のとおりです。

ここに画像の説明を入力してください

4

2 に答える 2

1

私が正しく理解し$fields['Occupation']、ドロップダウンから選択した複数の値が含まれている場合は、implodeAND categoryid IN (?)を使用して使用し、次のように配列を文字列にマージします。implode(',', $fields['Occupation'])

完全なコードは次のようになります。

myFunction("SELECT * FROM {table} WHERE canid=? AND categoryid IN (?)", array($emailCheck['id'], implode(',', $fields['Occupation'])));

アップデート

この場合、行ごとにこれらの列を個別に変更する必要がある場合は、PHP で配列をループして、個別のクエリを作成することをお勧めします。

for($i=0; $i<count($fields['Occupation']); $i++) {
    $id = $fields['Occupation'][$i];
    // here make query like before
    myFunction("UPDATE {table} SET canid=?, categoryid=? WHERE canid=? AND categoryid=?", array($emailCheck['id'], $id));
}
于 2012-09-21T00:06:14.867 に答える
0

各値のパラメータープレースホルダーを動的に生成する必要があります

$params = array_merge(array($emailCheck['id']), $fields['Occupation']);
$catPlaceholders = '?'.str_repeat(',?',count($fields['Occupation'])-1);

myFunction("SELECT * FROM {table} WHERE canid=? AND categoryid IN ("
        .$catPlaceholders.")", $params);
于 2012-09-21T17:46:04.597 に答える