Jus*_*tin 7 php mysql database pdo abstract-class
我使用mysql_query进入旧学校,现在开始使用PDO.哪个好极了!
但是在我的旧脚本中,我构建了一个动态查询构建器,并且我很难将其移植到使用PDO上.
如果有人能给我一些很棒的方向!
这是它的理论.
这是我正在尝试做的一部分.
public $dbFields; // This is an array of the fields plus VALUES
public function select($where, $limit) {
// This is what I **had** before
$query = "SELECT ". implode(", ", $this->dbFields) ." FROM ". $this->table." WHERE ". $where ." ". $limit."";
// Now i need to convert that to PDO
$this->connection->beginTransaction();
# START Query
$select = $this->connection->prepare("SELECT {$this->fieldNames} FROM {$this->table}");
// I need to BIND my params and values, but i'm not sure the best route to take when I have a WHERE clause that includes, "AND" / "OR" operators.
# EXECUTE the query
$select->execute();
$this->connection->commit();
}
Run Code Online (Sandbox Code Playgroud)
这是我HAD之前
$results = $db->select("userId = 111 OR userId = 222");
Run Code Online (Sandbox Code Playgroud)
但我认为我需要做的是使用更像的东西
$results = $db->select(array("userId"=>111, "userId"=>222));
Run Code Online (Sandbox Code Playgroud)
我知道这是一个很高的命令,我希望它在我想要做的事情上有意义,但是在尝试构建这些查询时的任何帮助都将非常感激.
您$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);
Run Code Online (Sandbox Code Playgroud)
笔记:
$dbFields“字段加值”是什么意思。你可以解释吗?[编辑]
您可能想查看PDOStatement::execute的文档/示例,因为这似乎是您的困惑的根源——尤其是$input_parameters方法参数。
| 归档时间: |
|
| 查看次数: |
9660 次 |
| 最近记录: |