2017-07-28 112 views
0

我正在從MySql數據庫收集大量數據字符串。這些數據必須在我網站上的不同地方使用。所以我想從我的數據庫收集的每個字符串被分配到它自己的變量。我不想一遍又一遍地寫同一段代碼。因此,我想使用一個數組來收集所有的字符串並在過程中創建特定的變量。以下是我的。使用數組從MySql收集數據並創建變量

$tableName = "fruits"; 
    $variablesArray = array(
        "Apple",    
        "Banana", 
        "Coconut",   
    ); 

    foreach($variablesArray as $val) { 
     $query = "SELECT * FROM {$tableName} WHERE ID = '{$val}'"; 
     $result = mysqli_query($conn, $query) or die('error'); 
     while($data = mysqli_fetch_array($result)) { 
     For ($n = 0; $n < 1; $n++){ 
      ${'$val'} = $data["COLORS"]; 
     } 
     } 
     echo ${'$val'}; 
     echo "</br>"; 
    }   

在上面,我使用數組中的數據庫的ID來收集數據庫中的數據。這回響於「綠色」,「黃色」,「布朗」。

不過,我想什麼,是讓三個變量:

  • $蘋果= 「綠色」
  • $香蕉= 「黃色」
  • $椰子= 「布朗」

上面的代碼不會創建這些。我不確定如何使用$ {'$ val'}來實現這一點。我也嘗試創建關聯數組,但我無法獲得我想要的。我希望這裏有人能指引我朝着正確的方向前進。謝謝!

+1

您的表格是否包含字符串ID? –

+2

您應該創建一個加載這些變量的類。然後你可以在需要它的地方注入相同的類實例(它已經在實例化中加載了變量),而不是用一堆變量混淆全局範圍。 –

+1

用戶Double doller。 $$ val = $ data [「COLORS」];和echo $$ val –

回答

1

您的問題(不一定是唯一的一個)位於${'$val'};

單引號字符串將不會解析變量,所以你的變量是毫不誇張地稱爲'$val'

使用$$val

${"$val"};也將是因爲雙引號字符串可以解析變量。然而,在這種簡單的情況下,不需要使用引號,因爲$val已經是一個字符串,並且不需要使用大括號,因爲沒有其他部分要將變量從中分離出來。