2017-05-29 51 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需要新列的名称。 再次感谢您对此事的帮助和提示。

相关问题