我的数据库中有这些表
table 1已命名为' store_item_stock'
table 2已命名为' store_item_color'
我使用以下代码创建项目名称及其各自代码的下拉列表:
//get colors
$get_colors_sql = "SELECT DISTINCT color_id FROM store_item_stock WHERE item_id = '" . $_GET["item_id"] . "' ORDER BY color_id";
$get_colors_res = $conn->query($get_colors_sql) or die("Couldn't connect :" . $conn->error);
$colors = $get_colors_res->fetch_array();
//if the item has colors
if ($get_colors_res->num_rows > 0 && !is_null($colors['color_id'])) {
//create select statement
$display_block .= "<p><strong>Available colors:</strong><br/>
<select name=\"sel_item_color\">";
do {
$item_color = $colors['color_id'];
//query the name belonging to that id
$get_item_color_name_sql = "SELECT * FROM store_item_color WHERE color_id = ".$item_color;
$get_item_color_name_res = $conn->query($get_colors_sql) or die("Couldn't connect :" . $conn->error);
$color_name = $get_item_color_name_res->fetch_array();
echo $color_name['color_id'];
$display_block .= "<option value=\"" . $item_color . "\">" . $color_name['item_color'] . "</option>";
echo "<pre>".var_dump($color_name)."</pre>";
}while ($colors = $get_colors_res->fetch_array());
}
$display_block .= "</select>";
//free result
$get_colors_res->free();
$get_item_color_name_res->free();
但是,当我运行此代码时,选择包含3 empty strings。 我尝试过var转储并得到这个:
1array(2){[0] =&gt;字符串(1)&#34; 1&#34; [&#34; COLOR_ID&#34;] =&GT;字符串(1)&#34; 1&#34; }
1array(2){[0] =&gt;字符串(1)&#34; 1&#34; [&#34; COLOR_ID&#34;] =&GT;字符串(1)&#34; 1&#34; }
1array(2){[0] =&gt;字符串(1)&#34; 1&#34; [&#34; COLOR_ID&#34;] =&GT;字符串(1)&#34; 1&#34; }
我该怎么做才能解决这个问题,并在下拉列表中显示颜色名称。
答案 0 :(得分:0)
根据你的var_dump $color_name
不包含item_color
的索引。因此空的选择。
我认为你在do
循环中有错误的查询,它应该是
$get_item_color_name_res = $conn->query($get_item_color_name_sql) or die("Couldn't connect :" . $conn->error);