【发布时间】:2017-05-29 14:23:23
【问题描述】:
我想使用表中现有列的值作为创建到另一个现有表中的列的名称。同时将从另一个表中获得的值插入到新创建的列中。 我有以下内容: 表:“feature_description”包含 4 列。 feature_id feature_language 功能名称 feature_admin_name 2 2 拉克托塞弗雷:拉克托塞弗雷 …… 在 feature-admin_name 下有 8 个值。我想将 8 个新列添加到以这 8 个值命名的现有表“产品”中。 到目前为止,我有以下代码。
<?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";
}
?>
但我得到的只是添加到以 8 个值的首字母命名的表“产品”中的 4 列! 8 个值是:Laktosefei、Glutenfrei、Gentechnikfrei、BIO、Herkunft、Milchsorte、Labart、Milchbehandlung。 但我得到 4 列的名称:L、G、H、M。 我究竟做错了什么? Kann 请有人在这件事上帮助我。 谢谢你。 当使用“var_dump”时, 然后我得到“回声”结果: Result of "var_dump" by "echo"
【问题讨论】:
-
var_dump($filter_name["feature_admin_name"])并将输出添加到问题中。 -
当我更改代码时:
$feature_name = var_dump($filter_name["feature_admin_name"]每个“回声”我得到以下内容:字符串(11)“Laktosefei”字符串(10)“Glutenfrei”字符串(14)“Gentechnikfrei”字符串(8 )“Herkunft”字符串(10)“Milchsorte”字符串(6)“Labart”字符串(15)“Milchbehandlung”。但是没有新的列被添加到表 products 中。 -
首先,您通常不会将
var_dump放入一个变量然后echo它。我不确定这是否可能。您只需var_dump变量即可查看里面的内容。关于您的问题,echo $filter_name['feature_admin_name'][$i]."\n<br />";行是完整输出单词还是仅输出单词的第一个字母? -
感谢您的提示。
echo $filter_name['feature_admin_name'][$i] . "\n<br />";行只给出单词的第一个字母。 -
而
mysqli_query($conn, "ALTER TABLE products ADD (" . $filter_name['feature_admin-name'][$i] . " VARCHAR(50))");行在表格产品中创建了 5 个新列。首先,这些列仅将第一个字母作为其名称。此外,它只创建名称的每个开头字母一次。这意味着对于像“Laktosefei”和“Labart”这样的值,我只是一个名为“L”的列。
标签: mysql phpmyadmin