Avrai bisogno di un $params
separato parametro al tuo select
metodo. Mi sono preso la libertà di fornire i valori predefiniti per i parametri del metodo. Come le note di @userXxxx, non hai bisogno di una transazione solo per fare un 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);
Note:
- Se proprio lo desideri, puoi aggiungere parametri di metodo aggiuntivi per abbinare tutta la flessibilità di PDOStatement::fetchAll .
- Non so cosa intendi con
$dbFields
essendo "campi più VALORI". Puoi spiegare?
[Modifica]
Potresti voler dare un'occhiata a docs/examples per PDOStatement::execute
, dal momento che sembrava essere lì che la tua confusione era radicata, in particolare, i $input_parameters
parametro del metodo.