在Slim Framework中定义MySQL连接?

ita*_*mar 3 php slim

我听到有关Slim Framework的好消息-似乎很简单。除了本教程中没有一个都涉及放置MySQL信息的地方。

我看到像 $dbCon = getConnection();

但是我在哪里定义用户名/ pw / db / host等?

Iva*_*tes 7

首先,让我们打开src / settings.php文件,并将数据库连接详细信息配置到settings数组,如下所示。

<?php
return [
  'settings' => [
      'displayErrorDetails' => true, // set to false in production

      // Renderer settings
      ....
      ....    

      // Monolog settings
      ....
      ....

      // Database connection settings
      "db" => [
          "host" => "localhost",
          "dbname" => "slim3",
          "user" => "root",
          "pass" => "xxxxx"
      ],
   ],
];
Run Code Online (Sandbox Code Playgroud)

有许多可用于PHP的数据库库,但是此示例使用PDO。现在打开您的src / dependencies.php文件并配置数据库库,如下所示。您可以通过修改示例来使用自己的库。

// DIC configuration
$container = $app->getContainer();

...
...
...

// PDO database library
$container['db'] = function ($c) {
    $settings = $c->get('settings')['db'];
    $pdo = new PDO("mysql:host=" . $settings['host'] . ";dbname=" . $settings['dbname'],
        $settings['user'], $settings['pass']);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    return $pdo;
};
Run Code Online (Sandbox Code Playgroud)

通过:https : //arjunphp.com/configure-load-database-slim-framework-3/


For*_*man 5

最好将这些凭据保存在本地配置文件中。我在 web 根目录外添加了一个 configs 文件夹,并向其中添加了一个 local.php 配置文件。

....
/configs
    local.php
/public
/vendor
....
Run Code Online (Sandbox Code Playgroud)

你可以配置任何你喜欢的东西,但这里是数据库:

<?php
// configs/local.php
return array(
    'db' => ['user' => 'root', 'password' => 'root']
);
Run Code Online (Sandbox Code Playgroud)

然后将文件包含在您的应用程序中并创建连接:

// public/index.php
$config = include(__DIR__ . '/../configs/local.php');
$db = new PDO("mysql:host=localhost;dbname=dbname", $config['db']['user'], $config['db']['password'] );

$app->get('/', function () use ($app, $db) {
    // do something with your db connection
});
Run Code Online (Sandbox Code Playgroud)


mjp*_*mos 2

您可以在文件中定义一个函数(例如index.php)

    function getConnection() {
    $dbhost="yourdbhost";
    $dbuser="yourdbuser";
    $dbpass="yourdbpass";
    $dbname="yourdb";
    $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);  
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    return $dbh;
    }
Run Code Online (Sandbox Code Playgroud)

  • 我个人不喜欢这种方法,因为您最终会在源代码中获得凭据。我会将凭据移至 Web 根目录之外的本地配置文件,该文件会被源代码管理系统忽略。 (9认同)