PHP MySQL Bağlantı Hatası

4 Cevap php

Ben root için parola ayarlamak ve kök için tüm ayrıcalıkları vermek var. Neden o engellendi diyor?

****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)

Kod aşağıdaki gibi:

<?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();



?>

4 Cevap

Eksik İkinci __construct() in için çizgi

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

denir asla çünkü tüm belirtiler olursa olsun function open_connection() çalışmıyor için parametreler kullanılabilir hale getirmek için ne (mysql _query uyarı yükselterek, hiçbir tanımsız değişken bildirimler, açıklıyor sizin web sunucusu LocalSystem olarak çalışır ve bu nedenle system varsayılan mysql bağlantısı için varsayılan kullanıcı adı, ...) çünkü system @ localhost için erişim engellendi

When you create a new object via $database = new MySQLDatabase(); the method _construct() isn't invoked and therefore neither is $this->open_connection() and therefore no value is assigned to the property $connection which remains NULL and no connection to the mysql server is established.
Now when you call $database->query('something'); and there is no database connection mysql_query() tries to establish the default connection as explained at http://docs.php.net/mysql_query:

resource mysql_query ( string $query [, resource $link_identifier ] )
[...]
If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.

  • _construct Içinde yazım hatası Fix ()
  • geçmek $ this-> bağlantı mysql_real_escape_string () için, mysql_query () ve mysql_error ()
  • open_connection() ihtiyacı olan tüm parametreleri, örneğin olduğundan emin olun isset($DB_SERVER,$DB_USER,$DB_PASS,$DB_NAME) or die('missing parameters');
  • o tüm çağrılmış olup olmadığını görmek için bazı hata ayıklama çıktı eklemek, örneğin echo "Debug: this->connection = mysql_connect($DB_SERVER,$DB_USER,$DB_PASS);\n";
  • gazillion mevcut sınıflardan biri, daha geniş kabul tercihen birini kullanın, kendi MySQL sınıf dönmez.

Geçerli olan $DBSERVER herhangi $DBUSER, $DBPASS tanımlamadığınız variable scope.

Bu değişkenlerin genel kapsamda iseniz bunları kullanır işlevlerine aşağıdaki eklemeniz gerekir:

global $DBSERVER,$DBUSER,$DBPASS;

Eğer open_connection fonksiyonunda yorumladı değişkenler tanımlanır ve daha sonra kullanmak amacıyla, önce bunları yorumsuz ve ardından mysql_connect işleve geçirilen argümanlar değiştirmek gerekir.

Belli ki MySQL sunucusuna bağlanmak için izin verilmez şifre olmadan SYSTEM kullanıcı olarak bağlıyoruz.

Gerçekten soruları temizlemek gerekir. Bu yayınlanan bir önceki sorunun sadece bir yeniden-yazıdır.

Ben senin soruna neden olabilir kodunuzda bir yazım hatası olduğuna inanıyorum. Sen $DB_SERVER vb gibi bağlantı Paramaters tanımlamak, ancak mysql_connect() çağrısı $DBSERVER kullanıyorsunuz. Eğer bağlantı çağrısı değişken adlarına çizgi eklemeniz gerekir.