我有两个数组,一个包含内部名称,这些名称被内嵌到名为$ fields的字符串中,另一个数据包含内嵌到$ data中的数据。
使用INSERT
命令首次输入数据时,查询看起来像......
mysql_query("UPDATE table ($fields) VALUES ($data)")
(顺便说一句:所有数据都已消毒)
我的目标是构建一个mysql UPDATE语句,其语法为
mysql_query("UPDATE table SET $field1=$data1, $field2=$data2 ...")
并立即更新所有字段,因此我需要组合两个数组来构建交替的字段/数据/字段/数据结构,而不是所有字段后跟所有数据。
我的想法是将array_combine
或array_merge
然后implode
用于一个字符串,然后将该函数设置为
mysql_query("UPDATE table SET $imploded-combined-arrays")
我认识到这不会起作用,因为implode语句的“粘合剂”有两个不同的值,这取决于它是等于还是分离字段/数据对。
如何逐步浏览两个数组并构建一个适合UPDATE
语法的字符串?
谢谢,
凸轮
答案 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'
答案 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'