Du skal bruge en separat $params
parameter til din select
metode. Jeg tog mig den frihed at angive standardindstillinger for metodeparametrene. Ligesom @userXxxx noter, behøver du ikke en transaktion bare for at udføre en 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);
Bemærkninger:
- Hvis du virkelig vil, kan du tilføje yderligere metodeparametre for at matche al fleksibiliteten i PDOStatement::fetchAll .
- Jeg er ikke sikker på, hvad du mener om
$dbFields
være "felter plus VÆRDIER". Kan du forklare?
[Rediger]
Du vil måske tage et kig på dokumenterne/eksemplerne for PDOStatement::execute
, da det så ud til at være der, din forvirring var forankret - især $input_parameters
metodeparameter.