簡體   English   中英

通過代碼將PHP連接到MySQL

[英]connecting PHP to MySQL via code

我有一個.ini文件,用於配置數據庫和構造函數,如下所示:

function PHPRestSQL($iniFile = 'phprestsql.ini') {

    $this->config = parse_ini_file($iniFile, TRUE);

    if (isset($_SERVER['REQUEST_URI']) && isset($_SERVER['REQUEST_METHOD'])) {

        if (isset($_SERVER['CONTENT_LENGTH']) && $_SERVER['CONTENT_LENGTH'] > 0) {
            $this->requestData = '';
            $httpContent = fopen('php://input', 'r');
            while ($data = fread($httpContent, 1024)) {
                $this->requestData .= $data;
            }
            fclose($httpContent);
        }

        $urlString = substr($_SERVER['REQUEST_URI'], strlen($this->config['settings']['baseURL']));
   $urlParts = explode('/', $urlString);

   $lastPart = array_pop($urlParts);
   $dotPosition = strpos($lastPart, '.');
   if ($dotPosition !== FALSE) {
    $this->extension = substr($lastPart, $dotPosition + 1);
    $lastPart = substr($lastPart, 0, $dotPosition);
   }
   array_push($urlParts, $lastPart);

   if (isset($urlParts[0]) && $urlParts[0] == '') {
    array_shift($urlParts);
   }

        if (isset($urlParts[0])) $this->table = $urlParts[0];
        if (count($urlParts) > 1 && $urlParts[1] != '') {
            array_shift($urlParts);
            foreach ($urlParts as $uid) {
                if ($uid != '') {
                    $this->uid[] = $uid;
                }
            }
        }

        $this->method = $_SERVER['REQUEST_METHOD'];

    }
}

設置構造函數后,它將嘗試通過connect方法與數據庫連接

 function connect() {
            $database = $this->config['database']['type'];
            require_once($database.'.php');
            $this->db = new $database(); 
            if (isset($this->config['database']['username']) && isset($this->config['database']['password'])) {
                if (!$this->db->connect($this->config['database'])) {
                    trigger_error('Could not connect to server', E_USER_ERROR);
                }
            } elseif (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
       $this->config['database']['username'] = $_SERVER['PHP_AUTH_USER'];
       $this->config['database']['password'] = $_SERVER['PHP_AUTH_PW'];
                if (!$this->db->connect($this->config['database'])) {
                    $this->unauthorized();
                    exit;
                }
            } else {
                $this->unauthorized();
                exit;
            }
        }

這是我的.ini文件配置的一部分:

[database]
type = "mysql"
;type = "postgresql"
server = "neighborme.db.7346057.hostedresource.com"
database = "neighborme"
;username = "dbusername"
;password = "dbpassword"
foreignKeyPostfix = "_uid"

我在.ini文件中做錯了什么使其無法連接?

為什么此if語句未返回true:

if (isset($this->config['database']['username']) && isset($this->config['database']['password']))

好吧... maby,因為您已在ini文件中注釋掉了用戶名?

嘗試將;username = "dbusername"更改為username = "dbusername"

老實說,並沒有真正看待其余的代碼,因為它是如此之多。 maby您可以嘗試將其減少到重現問題所需的必要部分嗎?

但是我上面提到的是我一見鍾情

嘗試刪除config.ini中帶注釋的用戶名和密碼行

[database]
type = "mysql"
;type = "postgresql"
server = "neighborme.db.7346057.hostedresource.com"
database = "neighborme"
;username = "dbusername"
username = "dbusername"
;password = "dbpassword"
password = "dbpassword"
foreignKeyPostfix = "_uid"

我猜想前導的分號(;)在ini文件中充當注釋標記。 因此,您的用戶名和密碼已被注釋掉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM