davewid / peyote
PHP 5.3+ 的数据库查询构建器
0.7.2
2014-02-11 15:18 UTC
Requires
- php: >=5.3
Requires (Dev)
- phing/phing: 2.6.*
- phpdocumentor/phpdocumentor: 2.0.*
- phpunit/phpunit: 3.7.*
README
一个需要 PHP 5.3 的 PDO MySQL 查询构建器引擎
安装
安装 Peyote 最简单的方法是将以下行添加到您的 composer.json 文件中。
"require":{ "davewid/peyote": "0.6.*" },
可选地,您可以下载此存储库的源代码并将 classes
文件夹移动过来。
标准
尽管库中未包含自动加载器,因此您需要自行设置。如果您使用 Composer 安装依赖项(强烈推荐),则无需担心任何问题,因为 Composer 会处理所有这些。
示例
我将从一个如何使用此库的完整示例开始,并在过程中逐步分解。
// Create a PDO instance $pdo = new PDO($dsn, $user, $password); // Create a SELECT query $query = new \Peyote\Select('user'); $query->where('user_id', '=', 1); // Build the PDOStatement $statement = $pdo->prepare($query->compile()); // Run the query $statement->execute($query->getParams()); // Fetch results $results = $statement->fetchAll();
为什么有 getParams()
调用?
保持查询免受 SQL 注入的影响超出了此库的范围,因此 Peyote 使用 ? 占位符并跟踪您输入的所有数据。
如果您输出 $query->compile(),您将看到这个。
SELECT * FROM user WHERE user_id = ?
此时,getParams()
将返回一个包含您传递的值的数组(在本例中为 1)。
PDO 将在 execute()
期间处理占位符替换,从而使您免受 SQL 注入的很大风险。
选择
$query = new \Peyote\Select('user'); $query->where('user_id', '=', 1); echo $query->compile(); // output: SELECT * FROM user WHERE user_id = ?
插入
$data = array( 'email' => "testing@foo.com", 'password' => "youllneverguess" ); $query = new \Peyote\Insert('user'); $query->columns(array_keys($data))->values(array_values($data)); echo $query->compile(); // output: INSERT INTO user (email, password) VALUES (?, ?)
更新
$data = array( 'password' => "iguesssomebodyguessed" ); $query = new \Peyote\Update('user'); $query->set($data)->where('user_id', '=', 1); echo $query->compile(); // output: UPDATE user SET password = ? WHERE user_id = ?
删除
$query = new \Peyote\Delete('user'); $query->where('user_id', '=', 1); echo $query->compile(); // output: DELETE FROM user WHERE user_id = ?
表语句
从版本 0.6.0 开始,Peyote 随附了用于创建、修改和删除表的语句。
创建
$query = new \Peyote\Create('user'); $query->setColumns(array( // Add Columns here.... )); echo $query->compile(); // output: CREATE TABLE user ( {columns here...} ) ENGINE=MyISAM DEFAULT CHARSET=utf8
列
有两种方式可以创建列。第一种是将原始 SQL 作为字符串输入。第二种是使用 \Peyote\Column
。
请参阅测试文件夹以获取更多使用示例。
注意:使用 serial
作为列类型将把列设置为 INT,主键,非空,无符号和自动递增。
修改
$query = new \Peyote\Alter('user'); // As string... $query->addColumn('activated TINYINT NOT NULL'); // As Column... $column = new \Peyote\Column('activated', 'TINYINT', array('is_null' => false)); $query->addColumn($column); echo $query->compile(); // Output: 'ALTER TABLE user ADD activated TINYINT NOT NULL';
删除
$query = new \Peyote\Drop('user'); echo $query->compile(); // Output: DROP TABLE user
由 Dave Widmer 开发