0

私は 2 つの配列を持っています。1 つは $fields という文字列に分割されたフィールド名を含み、もう 1 つは $data に分割されたデータを含みます。INSERTコマンドを使用して最初にデータを入力すると、クエリは次のようになります...

mysql_query("UPDATE table ($fields) VALUES ($data)")

(ところで:すべてのデータはサニタイズされています)

私の目標は、構文が次の mysql UPDATE ステートメントを作成することです。

mysql_query("UPDATE table SET $field1=$data1, $field2=$data2 ...")

すべてのフィールドを一度に更新するため、2 つの配列を組み合わせて、すべてのフィールドの後にすべてのデータが続く代わりに、フィールド/データ/フィールド/データ構造を交互に構築する必要があります。

私の考えは、array_combineまたはarray_mergeを使用implodeして文字列に変換し、関数を次のように設定することです

mysql_query("UPDATE table SET $imploded-combined-arrays")

内破ステートメントの「接着剤」には、フィールド/データのペアを同等にするか分離するかによって2つの異なる値があるため、これは機能しないことを認識しています。

UPDATE両方の配列をステップ実行して、構文に適した文字列を作成するにはどうすればよいですか?

ありがとう、

カム

4

2 に答える 2

2

これを試して

$a = array('key1', 'key2', 'key3');
$b = array('value1', 'value2', 'value3');
$c = array_combine($a, $b);
foreach($c as $key=> $value){
    $result[]=$key."='". $value."'";
}
$updatefields= implode (', ', $result);

echo ("update table set " .$updatefields);

出力

update table set key1='value1', key2='value2', key3='value3'

デモ

于 2013-02-28T06:52:26.177 に答える
1
$names = array ('foo', 'bar');
$values = array ('hello', 'world');
$pairs = array ();

foreach ($names as $i => $name)
{
    $value = $values [$i];

//  $name = mysql_real_escape_string ($name);
//  $value = mysql_real_escape_string ($value);

    $pairs [] = "`$name` = '$value'";
}

echo ("UPDATE t SET " . implode (', ', $pairs));

私にとっての出力は次のとおりです。

UPDATE t SET `foo` = 'hello', `bar` = 'world'
于 2013-02-28T06:37:32.500 に答える