2013-08-20 2 views
0

Я не могу получить свой код для привязки params к Mysql Query, что я делаю неправильно здесь?PHP PDO Cant Bind Params в классе

ОШИБКА

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens' in /Users/warren/Sites/Frame Work/Modules/User Login/classes/db.php:34 Stack trace: #0 /Users/warren/Sites/Frame Work/Modules/User Login/classes/db.php(34): PDOStatement->execute() #1 /Users/warren/Sites/Frame Work/Modules/User Login/classes/db.php(48): dbConnect->get_contents() #2 {main} thrown in /Users/warren/Sites/Frame Work/Modules/User Login/classes/db.php on line 34

КОД

<?php 
include '../../../../config.php'; 

$dbUser = $config['username']; 
$dbPass = $config['password']; 

class dbConnect { 

    public function connect($dbUser,$dbPass) { 
     $this->dbUser = $dbUser; 
     $this->dbPass = $dbPass; 
     try { 
      $this->connect = new PDO('mysql:hostname=localhost;dbname=totalrisk', $this->dbUser, $this->dbPass); 
      $this->connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      return $this->connect; 
     } catch (Exception $e) { 
      echo 'ERROR: ' . $e->getMessage(); 
     } 
    } 

    public function select_table($table) { 
     $this->select_table = $table; 
     echo $this->select_table; 
    } 

    public function select_col($col) { 
     $this->select_col = $col; 
     echo $this->select_col; 
    } 

    public function get_contents() { 
     $stmt = $this->connect->prepare('SELECT * FROM :table'); 
     $stmt->bindParam(':table', $this->table , PDO::PARAM_STR); 
      $stmt->execute(); 

      $result = $stmt->fetchAll(); 

      while($row = $stmt->fetch()) { 
       print_r($row); 
      } 
    } 
} 

$conn = new dbConnect(); 
$conn->connect($dbUser,$dbPass); 
$conn->select_table('users'); 
$conn->select_col('site_name'); 
$conn->get_contents(); 
?> 
+0

Где вы видели, что вы можете указывать имена таблиц в качестве связанных параметров? Просто интересно, есть ли учебник, преподающий людям такие вещи. –

ответ

1

Таблицы не должны быть переплетены, используйте:

$this->connect->prepare('SELECT * FROM ' . $this->select_table); 

Также обратите внимание, вы используете таблицу, где вы должны использовать select_table

Смежные вопросы