2010-11-29 87 views
3
$array = array 
     (
      53 => array('num' => 20,'name' => 'aaa'), 
      10 => array('num' => 20,'name' => 'bbb') 
     ); 

$ sql =「INSENT INTO data(id,num,name)VALUES ('53','20','aaa'),('10','20','bbb')」;如何將$數組轉換爲('53','20','aaa'),('10','20','bbb')php數組到SQL

感謝

回答

3

implode()可以幫你做到這一點,雖然你會通過需要循環並將其應用到每個單獨的數組:

$resultStrings = array(); 
foreach ($array as $key => $values) { 
    $subarrayString = "('$key','" . implode($values, "','") . "')"; 
    $resultStrings[] = $subarrayString; 
} 

$result = implode($resultStrings, ","); 
+1

`破滅($陣列, 「 ''」)` - >`破滅($子陣, 「 ''」)`謝謝 – love 2010-11-29 03:19:12

+0

是的,對不起,錯過了一個以前我張貼。剛剛更新了我的答案。 – 2010-11-29 03:22:56

1

我會做到這一點使用準備好的語句和簡單環路,如

$db = new PDO(...); 
$stmt = $db->prepare('INSERT INTO data(id, num, name) VALUES (?, ?, ?)'); 
$stmt->bindParam(1, $id); 
$stmt->bindParam(2, $num); 
$stmt->bindParam(3, $name); 

foreach ($array as $id => $vals) { 
    $num = $vals['num']; 
    $name = $vals['name']; 
    $stmt->execute(); 
} 
0

循環通過他們使用的foreach:

$result = ''; 
foreach ($array as $key=>$subarray) { 
    $result .= "('$key'"; 
    foreach ($subarray as $el) { 
     $result .= ",'$el'"; 
    } 
    $result .= "),"; 
} 
//get rid of the trailing comma 
$result = substr($result,0,-1); 

等瞧