bistro/data

一组类,用于简化数据管理

0.7.0 2013-07-10 17:26 UTC

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文件夹移动过来。

标准

Peyote遵循PSR-0PSR-1标准。

尽管库中包含了自动加载器,但您需要自行设置。如果您使用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开发