Ще ви трябва отделен $params
параметър към вашия select
метод. Позволих си да осигуря настройки по подразбиране за параметрите на метода. Подобно на бележки @userXxxx, нямате нужда от транзакция само за да направите SELECT
.
<?php
class db {
public $connection; //PDO
public $dbFields; // This is an array of the fields plus VALUES
public function select($where = '1', $params = array(), $limit = '', $fetchStyle = PDO::FETCH_ASSOC) { //fetchArgs, etc
$fields = implode(', ', $this->dbFields);
//create query
$query = "SELECT $fields FROM {$this->table} WHERE $where $limit";
//prepare statement
$stmt = $this->connection->query($query);
$stmt->execute($params);
return $stmt->fetchAll($fetchStyle);
}
//...
}
$where = 'userId IN(:userId1, :userId2)';
$params = array(':userId1' => 111, ':userId2' => 2222);
$db->select($where, $params);
Бележки:
- Ако наистина искате, можете да добавите допълнителни параметри на метода, които да съответстват на цялата гъвкавост на PDOStatement::fetchAll .
- Не съм сигурен какво имаш предвид за
$dbFields
като „полета плюс VALUES“. Можете ли да обясните?
[Редактиране]
Може да искате да разгледате документите/примерите за PDOStatement::execute
, тъй като изглежда, че това е мястото, където вашето объркване се корени - по-специално $input_parameters
параметър на метода.