0

我有两个数组,一个包含内爆到名为 $fields 的字符串中的字段名称,另一个包含内爆到 $data 中的数据。当第一次使用INSERT命令输入数据时,查询看起来像......

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

(顺便说一句:所有数据都经过消毒)

我的目标是构建一个 mysql UPDATE 语句,其中语法是

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

并一次更新所有字段,因此我需要组合这两个数组来构建交替的字段/数据/字段/数据结构,而不是所有字段后跟所有数据。

我的想法是使用array_combineorarray_merge然后implode进入一个字符串,然后将函数设置为

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

我认识到这不会起作用,因为 implode 语句的“胶水”有两个不同的值,具体取决于它是相等还是分隔字段/数据对。

如何逐步遍历两个数组并构建适合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 回答