用于mysql更新的交错数组

时间:2013-02-28 06:29:58

标签: php mysql arrays

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

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

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

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

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

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

我的想法是将array_combinearray_merge然后implode用于一个字符串,然后将该函数设置为

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

我认识到这不会起作用,因为implode语句的“粘合剂”有两个不同的值,这取决于它是等于还是分离字段/数据对。

如何逐步浏览两个数组并构建一个适合UPDATE语法的字符串?

谢谢,

凸轮

2 个答案:

答案 0 :(得分: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'

DEMO

答案 1 :(得分: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'
相关问题