无脂肪框架:数据库查询 - 非对象

时间:2013-11-12 10:42:12

标签: php mysql pdo fat-free-framework

我们正在关注github上的入门教程,一切顺利,但我们被困在数据库连接上。

我们已经创建了$ db对象:

    $db=new DB\SQL(
    'mysql:host=localhost;port=3306;dbname=liselore',
    'jow',
    ''
);

我们已经设置了一个控制器:

$f3->route('GET /',
function($f3) {

    $f3->set('result',$db->exec('SELECT achternaam FROM test1'));

    $template = new Template;
    echo $template->render('views/homepage.html');

    }
);

$f3->run();

但是,我们收到此错误:

Internal Server Error

Fatal error: Call to a member function exec() on a non-object

• fatfree-master/index.php:32 

我认为该错误与未设置的$ db对象有关。但是,我们确实有php-pdo设置,我只是通过phpinfo()检查。

任何帮助都会很棒,但是......

2 个答案:

答案 0 :(得分:2)

您使用的是closure,这意味着$db变量不再位于scope中。您需要使用use keyword告诉PHP允许使用父作用域中的变量。

$f3->route('GET /', function($f3) use ($db) {
    $f3->set('result', $db->exec('SELECT achternaam FROM test1'));

    $template = new Template;
    echo $template->render('views/homepage.html');
});

$f3->run();

答案 1 :(得分:1)

你已经说过了:

  

使用$ f3-> set方法设置的所有变量都是全局的

是的,将这些对象保存在这些框架变量中是一种常见做法。所以试试

$f3->set('DB', $db=new DB\SQL('mysql:host=localhost;port=3306;dbname=liselore','jow',''));

并在其他地方使用它:

$f3->set('result',$f3->get('DB')->exec('SELECT achternaam FROM test1'));