如何在 Fat Free Framework 的新 mysql 界面中使用变量

How to use variables in new mysql interface in Fat Free Framework

我正在用 fat free 框架解决这个问题:

$db=new DB\SQL(
    'mysql:host=localhost;port=3306;dbname=mysqldb',
    'admin',
    'p455w0rD'
);

如何在纯文本上使用变量?我想使用环境变量并执行类似的操作:

$db=new DB\SQL(
    'mysql:host='.getenv('HOST').';port=3306;dbname=mysqldb',
    getenv('USERNAME'),
    getenv('PASSWORD');
);

但是,它不起作用,我找不到另一种输入 sql 凭据的方法:( 这是文档:https://fatfreeframework.com/3.7/databases

上面的代码是我的错误:

Internal Server Error
SQLSTATE[HY000] [2002] No such file or directory [/Users/kasterby/Documents/yeet/yeet/fatfree-master/lib/DB/SQL.php:519]

No such file or directory 通常意味着您的 MySQL 服务器未启动并且 运行.

具体来说就是回答您的问题,如果您想要使用变量而不是对其进行硬编码,那非常简单。您可以使用 configuration files or you can create a totally separate file like PHP's ini parse function 或什至像这样使用的简单 config.php

// repo/config.php
<?php
return [
    'db_name' => 'database',
    'db_user' => 'someusername',
    // etc
];

// repo/public/index.php
$config = require('config.php');
$db = new DB\SQL(
    'mysql:host='.$config['db_host'].';port='.$config['db_port'].';dbname='.$config['db_name'],
    $config['db_user'],
    $config['db_pass']
);

具体到你的问题,如果你想要环境变量,这取决于你的网络服务器,但你必须在你的网络服务器配置中定义环境变量才能使用它们。您还可以创建一个类似于 Laravel 的 .env 文件,并使用提到的库 here

解析 .env 文件