使用select查询中的值作为新列的名称将新列添加到现有TABLE中
问题描述:
我想使用表中现有列的值作为创建到另一个现有表中的列的名称。同时将从另一个表中获得的值插入到新创建的列中。 我有以下内容: 表:“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"
答
首先,特别感谢基肖尔,谁给了我正确的吸头与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
需要新列的名称。 再次感谢您对此事的帮助和提示。
'var_dump($ filter_name [“feature_admin_name”])''并将输出添加到问题中。 – Kishor
当我改变代码:'$ 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
首先, var_dump'到一个变量中,然后'echo'它,我不确定这是否可能,你只需'var_dump'这个变量来看看里面是什么。关于你的问题,是echo $ filter_name ['feature_admin_name']行[\ n
“;'完全输出这个单词还是只输出单词的第一个字母? – Kishor