2014-06-21 154 views
0

我正在使用函數來檢索基於兩個參數$request$id的產品信息。處理請求並返回正確的數據庫字段以在查詢中使用。但是信息沒有被返回,但是作爲字符串的是$request值不返回

public function productInformation($request,$id) { 

    switch($request) { 

     case "id": 
      $request = "id"; 
      break; 
     case "desc": 
      $request = "description"; 
      break; 
     case "slug": 
      $request = "slug"; 
      break; 
     case "parent": 
      $request = "parent"; 
      break; 
     case "thumb": 
      $request = "thumb_url"; 
      break; 
     case "image": 
      $request = "image_url"; 
      break; 
     case "visible": 
      $request = "visibility"; 
      break; 
     case "time": 
      $request = "stamp"; 
      break; 
    } 

    $connect = new dbconnect; 
    $connect->query("SELECT :request FROM products WHERE id = :id"); 
    $connect->bind(":request",$request); 
    $connect->bind(":id",$id); 
    $query = $connect->single(); 

    return $query[$request]; 

} 

所以,如果$request = "desc"return $query[$request]將返回description作爲一個字符串?我打電話給正確的數組鍵,但我不太確定問題是什麼?

回答

2

您不能綁定列名(或表名),只有數據值....例如,你不能綁定$request,因爲它是列名

$connect->query(sprint("SELECT %s FROM products WHERE id = :id", $request)); 
$connect->bind(":id",$id); 
1

這是沒有必要把:request通過函數bind()是因爲通過你的開關沒有機會進行SQL注入。所以你可以把你的$request變量只作爲字符串來查詢。而且你也不能用表格創建參數。