PHP / MySQL查询不起作用?

时间:2018-04-20 04:13:48

标签: php mysql

我的数据库中有这些表

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; }

我该怎么做才能解决这个问题,并在下拉列表中显示颜色名称。

1 个答案:

答案 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);