2012-04-26 3 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

は[PHPとMySQLデータベースに配列を挿入](http://stackoverflow.com/questions/10054633/insert-array-into-mysql-database-with-php)の可能重複 – mario

+0

あなたがしたいかもしれません 代わりに '(name、vehicle)VALUES(?、?)'ステートメントを作成するものを探します。 – mario

+0

[警告:mysql_fetch_ *は、パラメータ1がリソース、ブール値の与えられたエラーを予期します](http://stackoverflow.com/questions/11674312/warning-mysql-fetch-expects-parameter-1-to-be-resource) -boolean-given-error) –

答えて

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

全く私の知るその関数に建てられたがありません。しかし、あなたは非常に簡単に使用して作ることができますarray_keys()array_values()

0

ノー組み込み関数。

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