bistro / data
0.7.0
2013-07-10 17:26 UTC
Requires
- php: >=5.3
This package is not auto-updated.
Last update: 2024-09-23 14:59:15 UTC
README
Bistro数据包包含许多有用的类,可帮助您管理数据。
高开发强度!!
以下内容可能正确也可能不正确。我正在努力将几个不同仓库合并到这个大包中,所以请耐心等待,我会整理好一切。
一个针对PDO的MySQL查询构建引擎,需要PHP 5.3。
安装
安装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开发