我有一个数据库,其中有不同的产品。每种产品都有不同的颜色可供选择。我想要实现的是在一个下拉菜单中选择产品可用的颜色,然后用所选颜色的产品加载页面。
我得到了以下内容:产品的初始选择如下:
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