2016-03-01 81 views
0

我遇到綁定多個值的問題。我已經嘗試過一個值,它工作正常。有什麼我錯過了嗎?PHP綁定值

當我運行查詢它給了我一個錯誤: 警告:PDOStatement :: execute():SQLSTATE [HY093]:無效的參數號:綁定變量的數量不匹配C:\ xampp \ htdocs \ Media \ admin \ dashboard \ classes \ DB.php on line 35

private function runQuery($sql, $bind_value = array()) { 
    $this->_error = false; 
    if($ms = $this->_query = $this->_pdo->prepare($sql)) { 
     $this->_query->bindValue($x, $bind_values); 
     if($this->_query->execute()) { //**ERROR FOUND HERE** 
      echo 'ok'; 
     } 
     die(); 
    } 
} 

public function get($column, $table, $where = array()) { 
    if($where) { 
     if(count($where) === 3) { 
      $operators = array(
       '=', 
       '<', 
       '>', 
       '>=', 
       '<=' 
      ); 

      $field  = $where[0]; 
      $operator = $where[1]; 
      $value  = $where[2]; 

      $bind_value = array(
       $column, 
       $table, 
       $field, 
       $operator, 
       $value, 
      ); 
      if(in_array($operator, $operators)) { 
       $sql = "SELECT ? ? WHERE ? ? ?"; 
       return $this->runQuery($sql, $bind_value); 
      } 
     } else { 
      echo 'problem'; 
     } 
    } 
} 

回答

0

你在這裏違反了幾乎所有的OOP規則。在你的班級中不應該有像_query這樣的變量。

你真正需要的僅僅是這五行:

public function runQuery($sql, $bind_value = array()) { 
    $stmt = $this->_pdo->prepare($sql); 
    $stmt->execute($bind_value); 
    return $stmt; 
} 

這不得不聲明,而不是將其設置爲一個類變量。 ()函數也是無用和錯誤的,你最好避免它。如果你真的想要一個函數來自動化選擇查詢,你必須看看現有的查詢構建器,如AuraSQL。