Fatal error: Cannot instantiate non-existent class

Diskutiere mit über: Fatal error: Cannot instantiate non-existent class im Datenbanksysteme für das Web Forum

  1. kmd

    kmd Thread Starter MacUser Mitglied

    Beiträge:
    4
    Zustimmungen:
    0
    Registriert seit:
    01.12.2006
    Hi,
    ich habe unter OS X MySQL 4.x installiert. PPHMyAdmin rennt und PHP Seiten ebenso.

    Meine config.php sieht so aus:

    PHP:
    <?php



    # Datenbank-Zugriffsdaten



    $db_host="localhost";

    $db_name="testdb";

    $db_user="kmd";

    $db_kennwort="xxx";

    $db_ms="mysql14";



    # Einstellungen



    $cfg_titel "DB";



    ?>
    Nun bekomme ich folgende Fehlermeldung:

    Fatal error: Cannot instantiate non-existent class: sql_db in /Library/WebServer/Documents/includes/db.php on line 37


    Die db.php sieht so aus:

    PHP:
    <?php







    switch($db_ms)

    {

      case 
    'mysql':

        include(
    'db/mysql.php');

        break;



      case 
    'mysql4':

        include(
    'db/mysql4.php');

        break;



      case 
    'postgres':

        include(
    'db/postgres7.php');

        break;



      case 
    'mssql':

        include(
    'db/mssql.php');

        break;



      case 
    'oracle':

        include(
    'db/oracle.php');

        break;



      case 
    'msaccess':

        include(
    'db/msaccess.php');

        break;



      case 
    'mssql-odbc':

        include(
    'db/mssql-odbc.php');

        break;

    }



    // Make the database connection.

    $db = new sql_db($db_host$db_user$db_kennwort$db_namefalse);

    if(!
    $db->db_connect_id)

    {

       die(
    "Could not connect to the database");

    }

    ?>
    änder in in der config.php "mysql14" in "mysql" bekomme ich auch keine Verbindung zur DB.

    Jemand ne Idee woran es liegen kann?
    Vielen Dank im Voraus!!!
     
  2. falkgottschalk

    falkgottschalk MacUser Mitglied

    Beiträge:
    24.026
    Zustimmungen:
    1.598
    Registriert seit:
    22.08.2005
    Oben steht bei Dir
    PHP:
    $db_ms="mysql14"
    mit 2 "l".

    Unten steht nur ein "l":
    PHP:
    case 'mysql4'

        include(
    'db/mysql4.php'); 

        break; 
    Ob php so kleinlich ist? :D :D :D
     
  3. kmd

    kmd Thread Starter MacUser Mitglied

    Beiträge:
    4
    Zustimmungen:
    0
    Registriert seit:
    01.12.2006
    Vielen Dank (hätte ich ja auch sehen müssen!!!:eek: ) ... das hat geholfen, jedoch zu einerm weiteren Fehler geführt:

    Warning: mysql_connect(): Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (2) in /Library/WebServer/Documents/db/mysql4.php on line 48
    Could not connect to the database

    Die mysql4.php sieht so aus:

    PHP:
    <?php


    if(!defined("SQL_LAYER"))
    {

    define("SQL_LAYER","mysql4");

    class 
    sql_db
    {

        var 
    $db_connect_id;
        var 
    $query_result;
        var 
    $row = array();
        var 
    $rowset = array();
        var 
    $num_queries 0;
        var 
    $in_transaction 0;

        
    //
        // Constructor
        //
        
    function sql_db($sqlserver$sqluser$sqlpassword$database$persistency true)
        {
            
    $this->persistency $persistency;
            
    $this->user $sqluser;
            
    $this->password $sqlpassword;
            
    $this->server $sqlserver;
            
    $this->dbname $database;

            
    $this->db_connect_id = ($this->persistency) ? mysql_pconnect($this->server$this->user$this->password) : mysql_connect($this->server$this->user$this->password);

            if( 
    $this->db_connect_id )
            {
                if( 
    $database != "" )
                {
                    
    $this->dbname $database;
                    
    $dbselect mysql_select_db($this->dbname);

                    if( !
    $dbselect )
                    {
                        
    mysql_close($this->db_connect_id);
                        
    $this->db_connect_id $dbselect;
                    }
                }

                return 
    $this->db_connect_id;
            }
            else
            {
                return 
    false;
            }
        }

        
    //
        // Other base methods
        //
        
    function sql_close()
        {
            if( 
    $this->db_connect_id )
            {
                
    //
                // Commit any remaining transactions
                //
                
    if( $this->in_transaction )
                {
                    
    mysql_query("COMMIT"$this->db_connect_id);
                }

                return 
    mysql_close($this->db_connect_id);
            }
            else
            {
                return 
    false;
            }
        }

        
    //
        // Base query method
        //
        
    function sql_query($query ""$transaction FALSE)
        {
            
    //
            // Remove any pre-existing queries
            //
            
    unset($this->query_result);

            if( 
    $query != "" )
            {
                
    $this->num_queries++;
                if( 
    $transaction == BEGIN_TRANSACTION && !$this->in_transaction )
                {
                    
    $result mysql_query("BEGIN"$this->db_connect_id);
                    if(!
    $result)
                    {
                        return 
    false;
                    }
                    
    $this->in_transaction TRUE;
                }

                
    $this->query_result mysql_query($query$this->db_connect_id);
            }
            else
            {
                if( 
    $transaction == END_TRANSACTION && $this->in_transaction )
                {
                    
    $result mysql_query("COMMIT"$this->db_connect_id);
                }
            }

            if( 
    $this->query_result )
            {
                unset(
    $this->row[$this->query_result]);
                unset(
    $this->rowset[$this->query_result]);

                if( 
    $transaction == END_TRANSACTION && $this->in_transaction )
                {
                    
    $this->in_transaction FALSE;

                    if ( !
    mysql_query("COMMIT"$this->db_connect_id) )
                    {
                        
    mysql_query("ROLLBACK"$this->db_connect_id);
                        return 
    false;
                    }
                }
                
                return 
    $this->query_result;
            }
            else
            {
                if( 
    $this->in_transaction )
                {
                    
    mysql_query("ROLLBACK"$this->db_connect_id);
                    
    $this->in_transaction FALSE;
                }
                return 
    false;
            }
        }

        
    //
        // Other query methods
        //
        
    function sql_numrows($query_id 0)
        {
            if( !
    $query_id )
            {
                
    $query_id $this->query_result;
            }

            return ( 
    $query_id ) ? mysql_num_rows($query_id) : false;
        }

        function 
    sql_affectedrows()
        {
            return ( 
    $this->db_connect_id ) ? mysql_affected_rows($this->db_connect_id) : false;
        }

        function 
    sql_numfields($query_id 0)
        {
            if( !
    $query_id )
            {
                
    $query_id $this->query_result;
            }

            return ( 
    $query_id ) ? mysql_num_fields($query_id) : false;
        }

        function 
    sql_fieldname($offset$query_id 0)
        {
            if( !
    $query_id )
            {
                
    $query_id $this->query_result;
            }

            return ( 
    $query_id ) ? mysql_field_name($query_id$offset) : false;
        }

        function 
    sql_fieldtype($offset$query_id 0)
        {
            if( !
    $query_id )
            {
                
    $query_id $this->query_result;
            }

            return ( 
    $query_id ) ? mysql_field_type($query_id$offset) : false;
        }

        function 
    sql_fetchrow($query_id 0)
        {
            if( !
    $query_id )
            {
                
    $query_id $this->query_result;
            }

            if( 
    $query_id )
            {
                
    $this->row[$query_id] = mysql_fetch_array($query_idMYSQL_ASSOC);
                return 
    $this->row[$query_id];
            }
            else
            {
                return 
    false;
            }
        }

        function 
    sql_fetchrowset($query_id 0)
        {
            if( !
    $query_id )
            {
                
    $query_id $this->query_result;
            }

            if( 
    $query_id )
            {
                unset(
    $this->rowset[$query_id]);
                unset(
    $this->row[$query_id]);

                while(
    $this->rowset[$query_id] = mysql_fetch_array($query_idMYSQL_ASSOC))
                {
                    
    $result[] = $this->rowset[$query_id];
                }

                return 
    $result;
            }
            else
            {
                return 
    false;
            }
        }

        function 
    sql_fetchfield($field$rownum = -1$query_id 0)
        {
            if( !
    $query_id )
            {
                
    $query_id $this->query_result;
            }

            if( 
    $query_id )
            {
                if( 
    $rownum > -)
                {
                    
    $result mysql_result($query_id$rownum$field);
                }
                else
                {
                    if( empty(
    $this->row[$query_id]) && empty($this->rowset[$query_id]) )
                    {
                        if( 
    $this->sql_fetchrow() )
                        {
                            
    $result $this->row[$query_id][$field];
                        }
                    }
                    else
                    {
                        if( 
    $this->rowset[$query_id] )
                        {
                            
    $result $this->rowset[$query_id][$field];
                        }
                        else if( 
    $this->row[$query_id] )
                        {
                            
    $result $this->row[$query_id][$field];
                        }
                    }
                }

                return 
    $result;
            }
            else
            {
                return 
    false;
            }
        }

        function 
    sql_rowseek($rownum$query_id 0)
        {
            if( !
    $query_id )
            {
                
    $query_id $this->query_result;
            }

            return ( 
    $query_id ) ? mysql_data_seek($query_id$rownum) : false;
        }

        function 
    sql_nextid()
        {
            return ( 
    $this->db_connect_id ) ? mysql_insert_id($this->db_connect_id) : false;
        }

        function 
    sql_freeresult($query_id 0)
        {
            if( !
    $query_id )
            {
                
    $query_id $this->query_result;
            }

            if ( 
    $query_id )
            {
                unset(
    $this->row[$query_id]);
                unset(
    $this->rowset[$query_id]);

                
    mysql_free_result($query_id);

                return 
    true;
            }
            else
            {
                return 
    false;
            }
        }

        function 
    sql_error()
        {
            
    $result['message'] = mysql_error($this->db_connect_id);
            
    $result['code'] = mysql_errno($this->db_connect_id);

            return 
    $result;
        }

    // class sql_db

    // if ... define

    ?>
    Wovon in Zeile 48 das hier steht:

    PHP:
            $this->db_connect_id = ($this->persistency) ? mysql_pconnect($this->server$this->user$this->password) : mysql_connect($this->server$this->user$this->password);
    Für eine weitere Hilfestellung wäre ich dankbar!! PHP selbst klappt, nur die ganze Konfigurierung muss ich noch lernen :-/
     
  4. oneOeight

    oneOeight MacUser Mitglied

    Beiträge:
    46.774
    Zustimmungen:
    3.629
    Registriert seit:
    23.11.2004
    guck mal in die my.cnf, ob du einen pfad zu einem socket angegeben hast und der nicht richtig ist...
    bzw versuch mal beim connect den port anzugeben....
     
  5. kmd

    kmd Thread Starter MacUser Mitglied

    Beiträge:
    4
    Zustimmungen:
    0
    Registriert seit:
    01.12.2006
    $cfg['Servers'][$i]['socket'] = '/tmp/mysql.sock';

    in der config.inc.php meinste?
     
  6. oneOeight

    oneOeight MacUser Mitglied

    Beiträge:
    46.774
    Zustimmungen:
    3.629
    Registriert seit:
    23.11.2004
    da halt wo du den socket definiert hast...
     
  7. kmd

    kmd Thread Starter MacUser Mitglied

    Beiträge:
    4
    Zustimmungen:
    0
    Registriert seit:
    01.12.2006
    Wo muss das geändert werden?
    In der config von meiner Webseite, die die DB abruft, in der PHPMyAdmin Config?

    Wie gesagt, mit dem Setup habe ich mich noch nie auseinandergesetzt.

    In meiner Seiten-config.php habe ich lediglich

    PHP:
    <?php



    # Datenbank-Zugriffsdaten



    $db_host="localhost";

    $db_name="testdb";

    $db_user="kmd";

    $db_kennwort="xxx";

    $db_ms="mysql4";



    # Einstellungen
    $cfg_titel "DB";



    ?>
    zu stehen....
     
  8. oneOeight

    oneOeight MacUser Mitglied

    Beiträge:
    46.774
    Zustimmungen:
    3.629
    Registriert seit:
    23.11.2004
    lies einfach mal wie man einen mysql connect macht in php ;)
    entweder korrigierst du mal die socket angabe in der mysql my.cnf oder in deiner php config (wo immer du das auch setzt) oder du sagst einfach localhost:3306 , damit der nicht den socket benutzt...
     

Diese Seite empfehlen

Benutzerdefinierte Suche