2012-04-26 58 views
0

是否有编码关联数组的函数用于mySQL INSERT命令?反向mysql_fetch_assoc(mysql_set_assoc/mysql_encode_assoc)

这样,你可以这样做:

$array = mysql_fetch_assoc($result); 
$array['key'] = 'updated_value'; 
mysql_query('INSERT INTO table ' . mysql_encode_assoc($array)); 

mysql_encode_assoc输入:

array(
    'name' => 'bob', 
    'vehicle' => 'car' 
) 

mysql_encode_assoc输出:

'(name, vehicle) VALUES(bob, car)' 
+0

[插入阵列到MySQL数据库和PHP(http://stackoverflow.com/questions/10054633/insert-array-into-mysql-database-with-php)的可能重复 – mario 2012-04-26 16:04:10

+0

您可能希望找一个能够创建'(名字,车辆)VALUES(?,?)'语句的人。 – mario 2012-04-26 16:05:05

+0

[Warning:mysql_fetch_ *期望参数1是资源,布尔给定错误]的可能的重复(http://stackoverflow.com/questions/11674312/warning-mysql-fetch-expects-parameter-1-to-be-resource -boolean给出的误差) – 2012-07-31 02:04:48

回答

4

现在有:

function mysql_encode_assoc($array) { 
    $kenc = Array(); 
    $venc = Array(); 
    foreach($array as $k=>$v) { 
     $kenc[] = "`".mysql_real_escape_string($k)."`"; 
     if($v === null) $venc[] = "NULL"; 
     else $venc[] = '"'.mysql_real_escape_string($v).'"'; 
    } 
    $keys = "(".implode(",",$kenc).")"; 
    $vals = "(".implode(",",$venc).")"; 
    return $keys." VALUES ".$vals; 
} 
0

无内置功能。

$sql = array(); 
foreach ($anArray as $f=>$v) $sql[] = "`{$f}`" = "'".mysql_real_escape_string($v)."'"; 
$query = "INSERT INTO table SET ".join(",", $sql);