如何在Fat Free Framework中的新mysql接口中使用变量

问题描述

我在使用无脂肪框架上为此苦苦挣扎:

$db=new DB\sql(
    'MysqL:host=localhost;port=3306;dbname=MysqLdb','admin','p455w0rD'
);

tu如何在纯文本上使用变量而不是?我想使用环境变量并执行以下操作:

$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,也可以创建一个完全独立的文件,例如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文件