Fatal error: Cannot instantiate non-existent class

K

kmd

Registriert
Thread Starter
Dabei seit
01.12.2006
Beiträge
4
Reaktionspunkte
0
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_name, false);

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!!!
 
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
 
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_id, MYSQL_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_id, MYSQL_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 > -1 )
			{
				$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 :-/
 
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....
 
$cfg['Servers'][$i]['socket'] = '/tmp/mysql.sock';

in der config.inc.php meinste?
 
da halt wo du den socket definiert hast...
 
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....
 
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...
 
Zurück
Oben Unten