PHP连接类

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

我试图在PHP中创建一个连接类来连接数据库数据,但行上出现一个错误:

const USER = "{$value['user_DB']}";
const PASS = "{$value['password_DB']}";  

致命错误:常量表达式在第21行的C:\ xampp \ htdocs \ dev \ davinci \ classes \ Conexao_Teste.class.php中包含无效操作

<?php

require_once"../classes/configDB.class.php";

abstract class conection extends configDB{

private $valor;
private $instanceConfigDB;

public function listDB(){
    $valor = $instanceConfigDB->listconfigDB();
    foreach($valor as $value){

        echo "Banco: ID:{$value['id_db']} - Hostname:{$value['hostname']} - DBNAME:{$value['dbname']} - User:{$value['user_DB']} - PASS:{$value['password_DB']}<br>";
    }
}


    const USER = "{$value['user_DB']}";
    const PASS = "{$value['password_DB']}";

    private static $instance = null;

    private static function conect(){
        try {

            if(self:: $instance==null):

                $dsn = "mysql:host={$value['hostname']};dbname={$value['dbname']};charset=utf8";
                self::$instance = new PDO($dsn, self::USER, self::PASS);
                self::$instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

            endif;

        } catch (PDOException $e) {
            echo "Erro: " . $e->getMessage();
        }
        return self::$instance;

    }

    protected static function getDB() {
        return self::conect();

    }


}
?>                  
php login
2个回答
0
投票

你应该用

define('USER', "{$value['user_DB']}");

因为const将在编译时进行评估,其中定义将在运行时进行评估。


0
投票

你试图在它定义的范围之外使用$ value [],这就是你得到这些错误的原因。

$ value []在方法listDB()中声明。如果要在方法之外使用该值,则必须在方法之外声明变量。

//Declaring variables and constants
private $valor;
private $instanceConfigDB;
private $username;
private $pass;
private $hostname;
private $dbname;

public function listDB(){
  $valor = $instanceConfigDB->listconfigDB();
  foreach($valor as $value){

      echo "Banco: ID:{$value['id_db']} - Hostname:{$value['hostname']} - DBNAME: {$value['dbname']} - User:{$value['user_DB']} - PASS:{$value['password_DB']}<br>";

     //Initialize your data
     $username = $value[user_DB];
     $pass = $value[password_DB];
     ....
  }
}

至少通过这种方式,您的数据可以在方法之外访问

您的connect方法将如下所示:

private static function conect(){
    try {

        if(self:: $instance==null):

            $dsn = "mysql:host={$hostname};dbname={$dbname};charset=utf8";
            self::$instance = new PDO($dsn, self::$username, self::$pass);
            self::$instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        endif;

    } catch (PDOException $e) {
        echo "Erro: " . $e->getMessage();
    }
© www.soinside.com 2019 - 2024. All rights reserved.