我想知道是否有人可以帮助解决这个问题。我用谷歌搜索,但我找不到我在想什么。我希望我能在这里解释清楚。
我有一个PRODUCTS表,其中包含categoryID,productID和imageFile列。
我正在尝试创建一个函数,在该函数中我可以将连接到特定类别id的图像放入变量中。
这是我到目前为止的功能。
function get_image_by_category($category_id) {
global $db;
$query = 'SELECT * FROM products
WHERE products.imageFile = :category_id';
$statement = $db->prepare($query);
$statement->bindValue(":category_id", $category_id);
$statement->execute();
$category_image = $statement->fetchAll();
$statement->closeCursor();
return $category_image;
}
我使用的是var_dump,它总是返回NULL,数组大小为0;
这是我在索引中使用函数来获取该图像的代码。
if ($action == 'list_products') {
$category_id = filter_input(INPUT_GET, 'category_id',
FILTER_VALIDATE_INT);
if ($category_id == NULL || $category_id == FALSE) {
$category_id = 1;
}
$categories = get_categories();
$category_image = get_image_by_category($category_id);
var_dump($category_image);
}
如果您需要更多信息,请告诉我。
谢谢!
答案 0 :(得分:0)
您的查询说明了这一点:
SELECT * FROM products WHERE products.imageFile = :category_id
将图像文件名与类别ID进行比较没有多大意义。这永远不会平等。
此外,您正在使用SELECT *
。专业提示:不要在软件中这样做;而是命名要返回的列。
请尝试此查询:
SELECT imagefile FROM products WHERE category_id = :category_id
如果每个类别都有大量图像,并且您希望它们全部用逗号分隔的单个字符串,请尝试此操作。
SELECT GROUP_CONCAT(imagefile) images FROM products WHERE category_id = :category_id