2010-04-16 55 views
0

我已經爲root設置了密碼並授予root的所有權限。它爲什麼說它被拒絕?PHP中的MySQL連接錯誤

****mysql_query() [function.mysql-query]: Access denied for user 'SYSTEM'@'localhost' (using password: NO) in C:\wamp\www\photo_gallery\includes\database.php on line 56 

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\wamp\www\photo_gallery\includes\database.php on line 56 

The Query has problemAccess denied for user 'SYSTEM'@'localhost' (using password: NO) 

代碼如下:

<?php 
include("DB_Info.php"); 

class MySQLDatabase 
{ 
    public $connection; 
    function _construct() 
    { 
     $this->open_connection(); 
    } 
    public function open_connection() 
    { 
     $this->connection = mysql_connect($DB_SERVER,$DB_USER,$DB_PASS); 
     if(!$this->connection) 
     { 
      die("Database Connection Failed" . mysql_error()); 
     } 
     else 
     { 
      $db_select = mysql_select_db($DB_NAME,$this->connection); 
      if(!$db_select) 
      { 
       die("Database Selection Failed" . mysql_error()); 
      } 
     } 
    } 
    function mysql_prep($value) 
    { 
     if (get_magic_quotes_gpc()) 
     { 
      $value = stripslashes($value); 
     } 
     // Quote if not a number 
     if (!is_numeric($value)) 
     { 
      $value = "'" . mysql_real_escape_string($value) . "'"; 
     } 
     return $value; 

    } 
    public function close_connection() 
    { 
     if(isset($this->connection)) 
     { 
      mysql_close($this->connection); 
      unset($this->connection); 
     } 
    } 
    public function query($sql) 
    { 

     $result = mysql_query($sql); 
     $this->confirm_query($result); 
     return $found_user; 
    } 
    private function confirm_query($result) 
    { 
     if(!$result) 
     { 
      die("The Query has problem" . mysql_error()); 
     } 
    } 

} 

$database = new MySQLDatabase(); 



?> 
+3

請不要回滾修訂以處理代碼格式。 – Yacoby 2010-04-16 11:40:44

+1

http://stackoverflow.com/questions/2650033/i-am-getting-error-like-mysql-connect-acces-denied-for-systemlocalhostusing-p – 2010-04-16 11:44:13

+0

global $ DBSERVER,$ DBUSER,$ DBPASS, $ DBNAME; $ DBSERVER =「localhost」; \t $ DBUSER =「root」; \t $ DBPASS =「」;(有我設定的密碼) \t $ DBNAME =「photo_gallery」; – Vicky 2010-04-16 11:53:46

回答

2

缺少第二次在

class MySQLDatabase 
{ 
    public $connection; 
    function _construct() 
    { 

強調了__construct()解釋了所有的症狀(MySQL的_query提高警告,沒有未定義的變量聲明,不管你做什麼,使參數提供給function open_connection()它doesn不工作,因爲它從來沒有被調用,訪問被拒絕系統 @ localhost,因爲你的web服務器作爲localsystem運行,因此system是默認的mysql連接的默認用戶名,...)

當您通過$database = new MySQLDatabase();創建新對象時,_construct()方法不會被調用,因此既不是$ this-> open_connection()也不是因此沒有賦值給屬性$ connection,而是保留爲NULL,並且沒有連接到mysql服務器建立了
現在,當你調用$database->query('something');並沒有數據庫連接的mysql_query()嘗試建立默認連接,在http://docs.php.net/mysql_query解釋說:

資源的mysql_query(字符串$查詢[,資源$ link_identifier])
[... ]
如果未指定鏈接標識符,則假定由mysql_connect()打開的最後一個鏈接。 如果沒有找到這樣的鏈接,它會嘗試創建一個,就好像調用mysql_connect()時沒有參數一樣。如果未找到或建立連接,則會生成E_WARNING級別錯誤。

  • 固定在_construct錯字()
  • 通過這 - $>連接mysql_escape_string()和請求mysql_query()和mysql_error()
  • 確保open_connection()有它所需要的所有參數,例如isset($DB_SERVER,$DB_USER,$DB_PASS,$DB_NAME) or die('missing parameters');
  • 添加一些調試輸出以查看它是否已被調用,例如, echo "Debug: this->connection = mysql_connect($DB_SERVER,$DB_USER,$DB_PASS);\n";
  • 不要推出自己的MySQL類,使用gazillion現有的類之一,最好是具有更廣泛接受度的類之一。
+1

+1,如果可以的話,我會給出另一個「不要推出自己的MySQL課程」的+1。 – chendral 2010-04-16 16:29:43

+0

thnx爲你提供幫助 – Vicky 2010-04-18 20:52:18

3

您還沒有在當前variable scope中定義的任何的$DBSERVER$DBUSER$DBPASS

如果這些變量是在全球範圍內,你必須添加以下到使用它們的功能:

global $DBSERVER,$DBUSER,$DBPASS; 

如果你打算使用在open_connection功能,您必須首先取消註釋定義,然後評價變量然後更改傳遞給mysql_connect函數的參數。

0

您正在以SYSTEM用戶身份連接,但沒有密碼,顯然不允許連接到MySQL服務器。

+0

只有兩個像根@ LOCALHOST和127,0 ... @ LOCALHOST有沒有系統的東西...我已經爲它設置了密碼 – Vicky 2010-04-16 11:46:05

0

你真的應該清理你的問題。這只是您發佈的早期問題的重新發布。

我相信你的代碼中有一個錯字,可能會導致你的問題。您將連接參數定義爲$DB_SERVER等,但您在mysql_connect()調用中使用$DBSERVER。您需要在連接調用中將下劃線添加到變量名稱中。

+0

實際上沒有參數錯誤,我試圖改變它。 define('DB_SERVER','')? null:define(「DB_SERVER」,「localhost」);這是在CONFIG.PHP文件中我打電話使用INCLUDE(「CONFIG」);但我不知道它不打電話給這個文件。爲什麼我不知道... PLZ HELP – Vicky 2010-04-16 11:45:02

+0

首先,您需要做:include(「config.php」)而不僅僅是include(「config」)。上面你仍然需要遵循Yacoby的建議。 – 2010-04-16 11:52:07

+4

由於您的CapsLock鍵顯然有問題,您是否檢查過變量和密碼?他們可能全都戴着帽子呢? (對不起,這沒有任何幫助..但我無法抗拒,真的很抱歉) – VolkerK 2010-04-16 11:53:49