我正在编写我自己的PDO包装,以使我的生活更轻松,更安全。更改PHP的PDO返回格式选择
的标准查询是这样的:
$user = $db->select('users')
->eq('twitter_id', $twitter_id)
->limit(1)
->prepare()
->exec();
生成此查询:
SELECT * FROM users WHERE twitter_id = :twitter_id LIMIT 1
这工作完全正常,因为我,现在,想要它。当我遇到问题时,我有一个查询返回多行。
我的应用程序存储,我要抢在一通使用一些动态设置,我可以做到这一点运行一个像查询方式:
$share_datas = $db->select('settings', 'setting, value')
->prepare()
->exec();
产生:
SELECT setting, value FROM settings
其中退货:
Array
(
[0] => Array
(
[setting] => since_id
[value] => 17124357332
)
[1] => Array
(
[setting] => last_dm
[value] => 1271237111
)
)
功能prepare()
将这些部分放在一起进行查询,功能exec()
绑定参数并返回数组。
function exec()
{
// echo 'vars: <pre>'.print_r($this->sql_vars, true).'</pre>';
$stmt = $this->dbh->prepare($this->sql_last_query);
foreach($this->sql_vars as $key => $val)
{
if('date_time' === $key) continue;
$bind = $stmt->bindValue($key, $val);
}
$stmt->execute();
$this->sql_vars = array();
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
我们的问题是:有没有办法,我可以改变exec()
或查询本身,以便它可以返回,返回像下面并避免任何额外的循环数组的方法吗?
Array
(
[since_id] => 17124357332
[last_dm] => 1271237111
)
你之所以不想使用PHp foreach循环来处理它的任何原因? – Lukman 2010-06-27 00:50:02
基本上,只是尽量避免额外的循环,尽可能 – Jayrox 2010-06-27 01:22:58