用数据库中的值填充下拉菜单


Populate a dropdown menu with values from a Database

我有一个数据库,其中有不同的产品。每种产品都有不同的颜色可供选择。我想要实现的是在一个下拉菜单中选择产品可用的颜色,然后用所选颜色的产品加载页面。

我得到了以下内容:产品的初始选择如下:

if (isset($_GET['product_id'])) {
 $query_RS_Product = ("SELECT * FROM products WHERE id = :pid AND hidden ='no'");
 $RS_Product = $conn->prepare($query_RS_Product) or die(errorinfo());
$RS_Product->bindValue(':pid', $_GET['product_id']);
$RS_Product->execute();
$row_RS_Product =$RS_Product->fetch();

现在我想为这个产品选择可用的颜色,并创建一个下拉菜单

<form><select name="productColor" id="pColor" class="dropmenu" >
<?php  
    $productcolor = $row_RS_Product['Model'];
    $productcolor="SELECT * FROM products WHERE (Model = ':productcolor'  AND hidden ='no' ORDER BY Color";
    $resultp=$conn->prepare($productcolor);
    $resultp->bindValue(':productcolor', $productcolor );
    $resultp->execute();
    while ($pcolor = $resultp->fetch($productcolor)) {
        echo '<option value="Select Color">' . htmlspecialchars($pcolor['Color']) . '</option>';
    }
   ?>
</select>
</form>

但是菜单不会被填充欢迎帮忙

摘自(我的)评论

这里有两个明显的错误WHERE (Model = ':productcolor'

1)需要移除的括号(;这是一个解析错误。

2)占位符的引号;这些需要移除。

那么$resultp->bindValue(':productcolor', $productcolor );你不能绑定一个"查询",你需要绑定一个值/数组。

您需要将$productcolor="SELECT ...中的变量重命名为其他东西,并将该变量用于(GET)数组。

PHP的错误报告和PDO错误处理在这里都有帮助。

引用:

  • http://php.net/manual/en/function.error-reporting.php
  • http://php.net/manual/en/pdo.error-handling.php