Da_Chris
Erfahrenes Mitglied
Hallo ich hab folgende Klassen:
wenn ich in der funktion add() in der user Klasse die find() funktion aufrufe bekomme ich folgenden Fehler:
Wenn ich sie weglasse kommt der fehler nicht hab aber an anderer stelle die mysql klasse bereits benutzt.
Der Fehler tritt nur auf wenn ich in der add() Funktion die find() Funktion aufrufe die ein neues mysql Objekt erstellt.
sorry leider etwas viel code weis aber nicht wo der fehler liegen könnte daher hab ich mal alles gepostet!
vielen dank schon im vorraus für die Hilfe!
PHP:
class mysql
{
public $host = cMysqlHost;
public $database = cMysqlDatabase;
private $user = cMysqlUser;
private $pass = cMysqlPass;
private $persistency = false;
private $serverid = "";
function mysql()
{
$serverid = $this->serverid;
$this->persistency = (defined(cMysqlPersistency)?cMysqlPersistency:false);
if ($this->persistency)
{
$this->serverid = mysql_pconnect($this->host, $this->user, $this->pass);
}
else
{
$this->serverid = mysql_connect($this->host, $this->user, $this->pass);
}
if (!($this->serverid))
{
return false;
}
else
{
if ($this->database == "")
{
return false;
}
else
{
$list = @mysql_list_dbs($this->serverid);
$db_exists = false;
while ($db = mysql_fetch_object($list))
{
if ($db->Database == $this->database)
{
$db_exists = true;
}
}
if (!(mysql_select_db($this->database, $this->serverid)))
{
return false;
}
}
}
}
function fetch_array($query,$result_type=MYSQL_ASSOC)
{
$array = array();
$result = mysql_query($query);
if (!$result)
{
return false;
}
while ($row = mysql_fetch_array($result,$result_type))
{
array_push($array,$row);
}
@mysql_free_result($result);
return $array;
}
function query($query)
{
$result = mysql_query($query);
if (!$result)
{
return false;
}
return $result;
}
function close()
{
if (!($this->serverid))
{
return false;
}
else
{
@mysql_close($this->serverid);
return true;
}
}
function __destruct()
{
if (!($this->persistency))
{
$this->close();
}
}
}
PHP:
class user
{
public $id = 0;
public $name = "Guest";
public $email = "";
protected $rights = array();
private $mysql = "";
function find($id="",$name="",$email="")
{
$mysql = new mysql();
$where = "";
if ($id!="")
{
$where .= ((strlen($where)>0)?" OR ":"")."`Id` = '".addslashes($id)."'";
}
if ($name!="")
{
$where .= ((strlen($where)>0)?" OR ":"")."`username` = '".addslashes($name)."'";;
}
if ($email!="")
{
$where .= ((strlen($where)>0)?" OR ":"")."`email` = '".addslashes($email)."'";;
}
return $mysql->fetch_array("SELECT * FROM `".cMysqlPrefix."_users` WHERE ".$where);
}
function add($name,$email,$arrRights)
{
$mysql = new mysql();
$arrUser = $this->find(5,"test","test2");
if (count($arrUser)>0)
{
// User already exists
return false;
}
$rights = serialize($arrRights);
$mysql->query("INSERT INTO `".cMysqlPrefix."_users` SET `username` = '".addslashes($name)."', `email` = '".addslashes($email)."', `rights` = '".addslashes($rights)."';");
return true;
}
}
PHP:
$arrRights = array("test1"=>true,"test2"=>false);
$user = new user();
$user->add("testuser","mail",$arrRights);
Code:
mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO)
Der Fehler tritt nur auf wenn ich in der add() Funktion die find() Funktion aufrufe die ein neues mysql Objekt erstellt.
sorry leider etwas viel code weis aber nicht wo der fehler liegen könnte daher hab ich mal alles gepostet!
vielen dank schon im vorraus für die Hilfe!