使用Fat-Free Framework从数据库中检索单个字段的最简单方法?

时间:2015-12-30 01:54:45

标签: php fat-free-framework

使用Fat-Free Framework从MySQL数据库中检索单个字段值的最简单方法是什么?我已经能够使用以下代码返回一个数组,但我想知道如何改进这个:

$result = $db->exec('SELECT id FROM admins WHERE username = ?',$f3->get('POST.username'));

此查询返回我们在可通过id访问的数组中寻找的$result[0]['id']字段 - 我们可以避免将其分配给数组并直接将其读取到字符串变量吗?

3 个答案:

答案 0 :(得分:1)

根据您使用的PHP版本,您可以执行此操作..

$result = $db->exec('SELECT id FROM admins WHERE username = ?',$f3->get('POST.username'))[0]['id'];

或者如果您使用的是纯PDO,则可以使用fetchColumn(),但您正在使用框架。更改返回值的唯一方法是编辑框架代码。

答案 1 :(得分:1)

您应该使用Cursor/Mapper

喜欢的东西:

\Base::instance()->set('DB',new DB\SQL('sqlite:db/database.sqlite'));
$admins_mapper = new \DB\SQL\Mapper(\Base::instance()->get('DB'), 'admins');
$admin = $admin_mapper->load(array('username = ?', \Base::instance()->get('POST.username'));

您还可以使用构建在Cursor上的Cortex

答案 2 :(得分:1)

我意识到这是一个老问题,但我最近遇到了同样的问题,并提出了findone()函数。我想分享它,因为以前没有提到过,以防其他人正在寻找解决方案。

$f3=\Base::instance();
$f3->set('DB',new DB\SQL('sqlite:db/database.sqlite'));
$admins = new \DB\SQL\Mapper($f3->get('DB'), 'admins');
$username = $admins->findone(['username = ?', $f3->get('POST.username')])->username;
第1-3行只是预赛。您需要一个表映射器才能使用此功能。第4行是一行,它将设置$ username以保存用户名的实际值。