如何在sql中通过id查询一列

时间:2015-04-25 19:28:45

标签: php mysql sql

我想知道是否有人可以帮助解决这个问题。我用谷歌搜索,但我找不到我在想什么。我希望我能在这里解释清楚。

我有一个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);
 }

如果您需要更多信息,请告诉我。

谢谢!

1 个答案:

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