SQL更新

SQL更新

问题描述:

比方说,我已经和数组这样SQL更新

$array= Array('id'=>'3', 'name'=>'NAME', 'age'=>'12'); 

从这个数组键是表和值的列的名称是,我需要更新的列值。 我想根据键和值更新表。 我使用ADODB 请帮我

+0

检查http://*.com/questions/23945476/php-sql-update - 阵列和http://*.com/questions/7884284/simple-update-mysql-table-from-php-array – Kavvson 2014-11-04 13:03:12

+0

以下答案任何工作的人吗? – 2014-11-04 13:35:01

你可以使用这样的实现是:

foreach($values as $value) { 
    if(!key_exists($value, $item)) { 
    return false; 
    } 

    $table->{$value} = $items[$value]; 
} 

试试这个:

$sql = "UPDATE table SET "; 
foreach($array as $key=>$value) { 
    $sql .= $key . " = " . $value . ", "; 
} 

$sql = trim($sql, ' '); // first trim last space 
$sql = trim($sql, ','); // then trim trailing and prefixing commas 

,当然还有WHERE条款:

$sql .= " WHERE condition = value"; 

你将获得这种严格G:

UPDATE table SET id = 3, name = NAME, age = 12 WHERE condition = value 

LE:您可能需要添加引号为字符串,所以我有我的代码更改为类似这样:

$sql = "UPDATE table SET "; 
foreach($array as $key=>$value) { 
    if(is_numeric($value)) 
     $sql .= $key . " = " . $value . ", "; 
    else 
     $sql .= $key . " = " . "'" . $value . "'" . ", "; 
} 

$sql = trim($sql, ' '); // first trim last space 
$sql = trim($sql, ','); // then trim trailing and prefixing commas 

$sql .= " WHERE condition = value"; 

这会产生这样的:

UPDATE table SET id = 3, name = 'NAME', age = 12 WHERE condition = value 

LE 2:如果您想要条件中的id列,代码将变为:

$sql = "UPDATE table SET "; 
foreach($array as $key=>$value) { 
    if($key == 'id'){ 
     $sql_condition = " WHERE " . $key . " = " . $value; 
     continue; 
    } 
    if(is_numeric($value)) 
     $sql .= $key . " = " . $value . ", "; 
    else 
     $sql .= $key . " = " . "'" . $value . "'" . ", "; 
} 

$sql = trim($sql, ' '); // first trim last space 
$sql = trim($sql, ','); // then trim trailing and prefixing commas 

$sql .= $sql_condition; 

这将产生这样的结果:

UPDATE table SET name = 'NAME', age = 12 WHERE id = 3 

希望这有助于! :d

假设关键指标始终ID和ADODB可以使用指定的占位符,你可以这样做:

$array = Array('id'=>'3', 'name'=>'NAME', 'age'=>'12'); 
$set = array(); 
$data = array(); 
while(list($key,$value)=each($array)) { 
    $data[':'.$key] = $value; 
    if($key!='id') { 
     $set[] = $key . ' = :' . $key; 
     // if no placeholders use $set[] = $key . " = '" . database_escape_function($value) . "'"; 
    } 
} 
$sql = "UPDATE table SET ".implode($set, ',')." WHERE id=:id"; 

//$data is now Array(':id'=>'3', ':name'=>'NAME', ':age'=>'12'); 
//$sql is now "UPDATE table SET name=:name, age=:age WHERE id=:id"; 

$stmt = $DB->Prepare($sql); 
$stmt = $DB->Execute($stmt, $data);