2017-05-29 56 views
0

我想使用表中現有列的值作爲創建到另一個現有表中的列的名稱。同時將從另一個表中獲得的值插入到新創建的列中。 我有以下內容: 表:「feature_description」包含4列。 feature_id feature_language feature_name feature_admin_name 2 2 Laktosefrei:Laktosefrei .... 在feature-admin_name下有8個值。我想將8個新列添加到以這8個值命名的現有表「產品」中。 直到現在我有以下代碼。使用select查詢中的值作爲新列的名稱將新列添加到現有TABLE中

<?php 
if ($conn = mysqli_connect("127.0.0.1", "root", "xxxxxxx", "fk16")) 
{ 
$feature_index = "SELECT * 
        FROM feature_set_values AS fsv 
      LEFT JOIN feature_value_description AS fvd ON fsv.feature_value_id = fvd.feature_value_id 
      LEFT JOIN feature_value AS fv ON fv.feature_value_id = fvd.feature_value_id  
      LEFT JOIN feature_description AS fd ON fd.feature_id = fv.feature_id  
      LEFT JOIN feature_set_to_products AS fstp ON fstp.feature_set_id = fsv.feature_set_id"; 
if ($filter_query = mysqli_query($conn, $feature_index)) 
{  
    while ($filter_name = mysqli_fetch_array($filter_query)) 
    { 
     //$feature_name = array(); 
     $feature_name = $filter_name["feature_admin_name"]; 
     //$feature_value = array(); 
     $feature_value = $filter_name["feature_value_text"]; 
     for ($i = 0; $i < count($filter_name['feature_admin_name']); $i++){ 
     echo $filter_name['feature_admin_name'][$i]."\n<br />"; 
     mysqli_query($conn, "ALTER TABLE products ADD (".$filter_name['feature_admin_name'][$i]." VARCHAR(50))"); 
     }   
    } 
    //echo "</table>"; 
} 
mysqli_close($conn); 
} 
else { 
echo "My Fehler"; 
} 
?> 

但我得到的只是4列添加到表中的8個值的名稱「產品」的列! 8值包括:Laktosefrei,Glutenfrei,Gentechnikfrei,BIO,Herkunft,Milchsorte,Labart,Milchbehandlung。 但是我得到4列名稱:L,G,H,M。 我做錯了什麼? Kann請有人幫助我解決這個問題。 Thankyou。 當「的var_dump」使用, 然後我得到了「回聲」的結果: 所有的Result of "var_dump" by "echo"

+0

'var_dump($ filter_name [「feature_admin_name」])''並將輸出添加到問題中。 – Kishor

+0

當我改變代碼:'$ feature_name = var_dump($ filter_name [「feature_admin_name」]'我得到每個「回聲」以下內容:string(11)「Laktosefrei」string(10)「Glutenfrei」string(14)「Gentechnikfrei 「字符串(8)」Herkunft「字符串(10)」Milchsorte「字符串(6)」Labart「字符串(15)」Milchbehandlung「但是沒有新的列被添加到表產品中 – Cyrus

+0

首先, var_dump'到一個變量中,然後'echo'它,我不確定這是否可能,你只需'var_dump'這個變量來看看裏面是什麼。關於你的問題,是echo $ filter_name ['feature_admin_name']行[\ n
「;'完全輸出這個單詞還是隻輸出單詞的第一個字母? – Kishor

回答

0

首先,特別感謝基肖爾,誰給了我正確的吸頭與var_dump()。 我現在已經解決了這個問題,如下所示:

<?php 
if ($conn = mysqli_connect("127.0.0.1", "root", "xxxxxx", "fk16")) 
{ 
    $feature_name = array(); 
    $feature_index = "SELECT * 
        FROM feature_set_values AS fsv 
      LEFT JOIN feature_value_description AS fvd ON fsv.feature_value_id = fvd.feature_value_id 
      LEFT JOIN feature_value AS fv ON fv.feature_value_id = fvd.feature_value_id  
      LEFT JOIN feature_description AS fd ON fd.feature_id = fv.feature_id  
      LEFT JOIN feature_set_to_products AS fstp ON fstp.feature_set_id = fsv.feature_set_id 
       LEFT JOIN products AS p ON p.products_id = fstp.products_id"; 
if ($filter_query = mysqli_query($conn, $feature_index)) 
{ 
    while ($filter_name = mysqli_fetch_array($filter_query)) 
    { 
    $feature_name = array('id' => $filter_name["feature_id"], 'name' => $filter_name['feature_admin_name']); 
     foreach ($feature_name as $id => $name) 
     { 
      mysqli_query($conn, "ALTER TABLE products ADD (".$name." VARCHAR(20))"); 
     } 
    } 
    mysqli_close($conn); 
} 
?> 

現在,我得到的8個必要的值從表feature_description.feature_admin_name 爲8個添加到表products需要新列的名稱。 再次感謝您對此事的幫助和提示。

相關問題