prepareしたSQLにデータを実際にセットしようとしても、プレースホルダーにセットされません。
例えば、以下のコードでは、
$db = new DB(); $db->get("users",array("name", "=" , "ken");
SELECT * FROM users where name = "ken" ```というSQLを作りたいのですが、コード中のコメントのbindValue前でもvindValue後のvar_dumpでも、 ```ここに言語を入力 object(PDOStatement)#6 (1) { ["queryString"]=> string(38) "SELECT * FROM users WHERE username = ?" }
となっていて、? がkenに置き換わりません。
どのようにしたら良いでしょうか?
お願いします。
DBクラス
```ここに言語を入力
public function query($sql , $params = array()){
$this->_error = false; if($this->_query = $this->_pdo->prepare($sql)){ $x = 1; if(count($params)){ foreach($params as $param){ //bindvalue前 var_dump($this->_query); $this->_query->bindValue($x,$param,PDO::PARAM_STR); $x++; //bindvalue後 var_dump($this->_query); } } if($this->_query->execute()){ $this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ); $this->_count = $this->_query->rowCount(); }else{ $this->_error = true; } } return $this; } public function action($action,$table, $where = array()){ if(count($where) === 3){ $operators = array('=', '>', '<' ,'>=' ,'<='); $field = $where[0]; $operator = $where[1]; $value = $where[2]; if(in_array($operator, $operators)){ $sql = "{$action} FROM {$table} WHERE {$field} {$operator} ?"; if(!$this->query($sql, array($value))->count()){ return $this; } } } return false; } public function get($table, $where){ return $this->action("SELECT *",$table, $where); }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。