PHP - 无法访问字符串上字符串类型的偏移量

问题描述 投票:0回答:1

我对 PHP 有点陌生,不太理解在文本上使用括号语法的概念。现在我正在尝试连接到我的数据库:

数据库.php:

<?php  

class Database {
    public $conn; 

    public function __construct($config)
    {
        $dsn = "mysql:host={$config['host']};port={$config['port']}; dbname={$config['dbname']}";

        $options = [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        ];

        try {
            $this->conn = new PDO($dsn, $config["username"], $config["password"], $options);

            echo 'connected';
        } catch (PDOException $e) {
            throw new Exception("Database connection failed: {$e->getMessage()}");
        }
    }
}

这是我不断收到的错误:

enter image description here

显然错误来自第 8 行,我在其中启动了 $dsn 变量。据说 $config 变量有问题,所以我注释掉了所有内容并回显了 $config 的值。当我这样做时,我得到了

"Jack"
的值,这很奇怪,因为 $config 应该是一个数组,而 Jack 应该是键/值对之一的一部分。

这里是config.php

<?php 

return [
    'host' => 'localhost',
    'port' => '3306',
    'dbname' => 'workophia',
    'username' => 'Jack',
    'password' => '123456'
];

为什么 $config = "Jack" & 的值不是数组?我相信我在这里找到了答案,但我仍然不太明白我正在读的内容我的问题的可能答案

如果有一点帮助,我们将不胜感激。

差点忘了添加index.php:

<?php
require '../helpers.php';

require basePath('Database.php');
$config = require basePath('config/db.php');

$db = new Database($config["username"]);

require basepath('Router.php');

$router = new Router();

$routes = require basepath('routes.php');


$uri = $_SERVER['REQUEST_URI'];
$method = $_SERVER['REQUEST_METHOD'];

$router->route($uri, $method);
php pdo
1个回答
0
投票

在第 7 行的 index.php 中,我只需从 $config 实例中删除 ['username']。

© www.soinside.com 2019 - 2024. All rights reserved.