2017-02-03 137 views
0

我有一個關於這個問題的問題(按標題)。 這是我的陣列PHP - 從多維數組插入到數據庫

Array 
(
    [0] => Array 
     (
      [0] => 0 
      [1] => 0 
     ) 

    [1] => Array 
     (
      [0] => 3 
      [1] => 2 
     ) 

    [2] => Array 
     (
      [0] => 1 
      [1] => 0 
     ) 
) 

爲更詳細地,可以看到圖像 Multidimensional Array

第一維將始終具有相同的長度(在這種情況下是3)。 我想實現的是: 我想要從這個多維數組中獲取數據,所以我可以使用該值來更新我的數據庫。語法是這樣的(我將使用循環):

$sql = "UPDATE table_name SET column1='".$body[$i]."', column2='".$grip[$i]."', column3='".$gear[$i]."' WHERE `variant`='".$variant[$i]."'"; 

這可能嗎? 在這種情況下,variant列將是A,B。

我已經看到了這些問題

http://stackoverflow.com/questions/8757773/convert-2d-array-to-a-string-using-php 
http://stackoverflow.com/questions/7746720/inserting-a-multi-dimensional-php-array-into-a-mysql-database 

,但我還是不明白。

這是我的代碼

if ($stmt2 = $conn->prepare("SELECT * FROM ms WHERE variant in (SELECT variant FROM pwhorder WHERE times = '$time' AND NOT quantity = 0)")) { 
    $stmt2->execute(); 
    $result2 = $stmt2->get_result(); 
    $num_of_rows2 = $result2->num_rows; 
    while ($row2 = $result2->fetch_assoc()) { 
     $amountb1[]=$row2["amount1"]; 
     $amountb2[]=$row2["amount2"]; 
     $amountb3[]=$row2["amount3"]; 
    } 
    $stmt2->free_result(); 
    $stmt2->close(); 
} 

$stock=array($amountb1,$amountb2,$amountb3); 

我這樣做是因爲起初我想$request比較$stock$request的編碼與$stock類似,只是從不同的表中取出。

請幫助我,夥計。 我真的很感謝你的幫助。

+1

數組的代碼在哪裏?如果你想用命名索引來訪問它,那麼它需要使用命名索引來構建。 – Andy

+0

@AndyC,我編輯了我的帖子。 – Theo

回答

0

這似乎是一個完美的案例,其中關聯數組可以很好地解決您的問題。然而,既然你說過這個問題正在使用索引數組,你需要遍歷每個數組並執行操作,但是你必須維護一個伴隨數組值來解釋索引到它們的鍵。

從您的查找數組開始,作爲數據的伴侶。

$top_level = array('Body', 'Grip', 'Gear'); 
$second_level = array('A','B'); 

然後你會想要處理你的數據數組並存儲到它的關聯伴隨鍵控數組中。

所以我們說你的多維數組將被命名$data

for($d = 0 ; $d < count($data); $d++) 
{ 
    for($s = 0; $s < count($data[$d]); $s++) 
    { 
     $output[$top_level[$d]][$second_level[$s]] = $data[$d][$s]; 
    }//END FOR S < DATA{D} 
}//END FOR D < COUNT(DATA) 

現在,這是目前未經測試的代碼(我不是內的PHP編譯器進行測試的範圍)。如果您發現任何錯誤,請發表評論,我很樂意進行更新。

由此產生的$output數組應該是您正在查找的格式化數據,如果我正確理解您的話。