2013-02-28 63 views
0

我有两个数组,其中一个包含内部解压成名为$ fields的字符串的字段名称,另一个包含数据解密为$ data。 当使用INSERT命令查询看起来像刚进数据...为mysql更新交叉数组

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

(BTW:所有数据消毒)

我的目标是建立一个MySQL UPDATE语句在句法是

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

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

我的想法是使用array_combinearray_merge,然后implode成一个字符串,然后将功能设置为

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

我承认,这将不会作为“胶水”的破灭语句工作两个不同的值取决于它是等同还是分开字段/数据对。

我怎样才能遍历这两个数组并构建一个适用于UPDATE语法的字符串?

感谢,

凸轮

回答

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' 
+0

完美 - 这正是我需要的 – user1940081 2013-02-28 19:45:02

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

+0

谢谢 - 那完美。 – user1940081 2013-03-02 05:56:43

+0

不客气。如果它可以帮助你请upvote .. – Reshil 2013-03-02 06:43:33