@ Joy, een database connectie kan ik wel maken hoor.
En ik heb niet veel ervaring met Php.
Ik ben er alleen mee bezig in de vakantie als ik tijd heb.
ok prima hoor , maar was eigenlijk meer een reactie op of apache op dezelfde server stond :)
[size=xsmall]Toevoeging op 29/12/2011 14:45:33:[/size]
- SanThe - op 29/12/2011 14:43:44
Tja.
Dan heb je misschien ergens tijdens het instellen van de naam en password in de mysql server een typo gemaakt ofzo. Stel mysql server naam en password eens opnieuw in en kijk dan of het inloggen via php misschien weer lukt.
hier ben ik dus 2 dagen mee bezig geweest het instellen van het password username ect .
met 3 verschillende servers . en blijf deze melding krijgen .
ik zal toch maar weer eens alles na checken . maar er staat dus geen overduidenlijke fout in de code waardoor het fout kan gaan ?
[size=xsmall]Toevoeging op 29/12/2011 14:50:41:[/size]
Erwin H op 29/12/2011 13:05:59
Het lost je probleem waarschijnlijk niet op... maar toch twee opmerkingen:
1)
<?php
public $Username;
public $Password;
public $Database;
public $Host;
?>
Deze hoeven natuurlijk niet public te zijn. Sterker, zou ik nooit doen. Je hebt een set en get methode waarmeee ze zijn uit te lezen en op te geven. De variabelen zelf kunnen dus lekker private zijn.
Dit gaat zo nooit werken. "return" geeft de waarde van de variabele erachter terug aan de aanroepende functie en stopt daarna de executie van de functie. De eerste return zal dus de username teruggeven, de rest wordt niet uitgevoerd.
Ja, je krijgt alleen $this->Username terug. Want na 1 return wordt de executie gestopt, dus PHP zal nooit de laatste 3 returns lezen.
Je kan het in een array zetten en die returnen, maar volgens OO regels kun je beter een getter per var maken of gebruik maken van de Magic Method _get:
<?php
class Database
{
protected $host;
protected $user;
protected $pass;
protected $table;
protected $db;
public function __construct( $host, $user, $pass, $table )
{
$this->host = (string) $host;
$this->user = (string) $user;
$this->pass = (string) $pass;
$this->table = (string) $table;
$this->db = mysql_connect($host, $user, $pass);
if( $this->db === false )
{
throw new Exception("We couldn't connect to a server");
}
else
{
if( mysql_select_db($table, $this->db) === false )
{
throw new Exception("We couldn't select a database");
}
}
}
// Voor elke propertie een getter
public function getUser()
{
return $this->user;
}
public function getPass()
{
return $this->pass;
}
// ect....
// Een array returnen
public function getData()
{
$data = Array(
['host'] => $this->host,
['user'] => $this->user,
['pass'] => $this->pass,
['table'] => $this->table
);
return $data;
}
// Magic Method __get
public function __get( $varName )
{
return $this->$varName;
}
}
try
{
$db = new Database('localhost', 'username', 'password', 'Tabelnaam');
echo $db->getUser(); // 'username'
echo $db->getData(); // Array( [host] => 'localhost', [user] => 'username', [pass] => 'password', [table] => 'Tabelnaam' );
echo $db->user; // 'username' (de Magic Method __get wordt aangeroepen)
}
catch( Exception $e )
{
echo 'Er is een fout opgetreden: '.$e->getMessage;
}
?>
Access denied for user 'Hier me usernaam'@'hiermehost' (using password: YES)
Wat heb je gedaan om 'Hier me usernaam' te autoriseren op MySQL op host 'hiermehost'??
De melding Access denied is duidelijk, je moet deze user nog even access granten. Hoe moeilijk kan het zijn? ik heb daarbij alle mogenlijke soorten passworden en hosten gebruikt Is trial-on-error gedoe en lost niks op...
[color=#f00]Haal je inlog gegevens weg en verander die, want het staat nu al een tijdje op het internet[/color]
Gebruik nooit echo's in functies (behalve in view functies). Altijd return want een functie bepaald niet hoe het resultaat getoond wordt, dat bepaald de view functie.
Gebruik geen die of exit, maar handel het script netjes af. Of zoals onze beste man Karl altijd zei: 'Jij gaat ook niet dood als je een fout maakt.'
Haal ook even die foutonderdrukking weg (alle @)
Je maakt in de Connect functie connectie en meteen daarna gebruik je [php]mysql_close[/php], wat klopt daar niet aan? Tevens is mysql_close onzinnig en hoef je het nooit te gebruiken.