2016-10-07 108 views
-1

我試圖拉出當前類別與產品類別相同的項目列表,但是當我嘗試下面的代碼時,儘管在數據庫中有6個條目,但我沒有收到任何項目該項目的類別等於當前類別名稱PDO選擇什麼都不返回

$category_name = $_GET['category']; 
    $category_products = $DB_con->prepare("SELECT * FROM products WHERE product_category = :category_name"); 
    $category_products->bindParam(":category_name",$category_name,PDO::PARAM_STR); 
    $category_products->execute(); 
    $row = $category_products->fetchAll(PDO::FETCH_ASSOC); 
    var_dump($row); 
+0

什麼是'的var_dump($行);' ?是類別字符串?因爲如果是整數即'1','2'等,這個錯誤也是'PDO :: PARAM_STR' –

+0

var_dump($ row)返回數組(0){},$ category_name是類別名稱的實際字符串是 – Aaranihlus

+0

檢查名稱以確保'var_dump($ category_name);' – nospor

回答

1

您可以嘗試做一點點不同像下面輕輕評論片段演示:

<?php 

    // SANITIZE DATA FROM THE $_GET GLOBAL A BIT... 
    $category_name  = isset($_GET['category']) ? htmlspecialchars(trim($_GET['category'])): null; 
    $row    = null; 

    // CHECK THAT $category_name EXISTS FIRST.... 
    if($category_name) { 
     $parameters   = array("category_name" => $category_name); 
     $category_products = $DB_con->prepare("SELECT * FROM products WHERE product_category = :category_name"); 

     // YOU MAY TRY PASSING THE NAMED PARAMETERS DIRECTLY AS AN ARRAY TO THE execute METHOD: 
     $category_products->execute($parameters); 
     $row    = $category_products->fetchAll(PDO::FETCH_ASSOC); 
    } 
    var_dump($row);