Franz Ulrich: Access denied nach Umstellung auf PHP5

Guten Morgen Forumer,

ich wechsle demnächst zu einen neuen Provider. Dieser setzt PHP5, statt wie bisher PHP4 ein.

Nun bekomme ich beim Versuch auf eine mySQL-DB zuzugreifen, folgende Fehlermeldungen:

Warning: mysql_query() [function.mysql-query]: Access denied for user 'www-data'@'localhost' (using password: NO) in /var/www/xxx.php on line 14

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /var/www/xxx.php on line 14

Bei meiner Recherche habe ich zwar rausgefunden dass sich bei der Datenbankverbindung in PHP5 etwas geändert hat, aber so richtig verstehen tue ich es nicht. Wäre klasse, wenn Ihr mir etwas auf die Sprünge helfen könnt.

So sieht mein Code für die Datenbankverbindung aus:

<?php  
// connect to the database...  
global $connect;  
$db_host = 'localhost'; // Server  
$db_user = 'user'; // Benutzer  
$db_pass = 'password'; // Passwort  
$db_name = 'db'; // Datenbank  
@$connect=mysql_pconnect("$db_host", "$db_user", "$db_pass") or die ("Nix geht Datenbankverbindung konnte leider nicht hergestellt werden");  
mysql_select_db($db_name);  
  
?>

Und in einer zweiten Datei der entsprechende Code:

$sql= "INSERT INTO tabelle (ip) VALUES ('".$_SERVER['REMOTE_ADDR']."')";  
mysql_query($sql);

Schönen Gruß, Peter

  1. Hi!

    Warning: mysql_query() [function.mysql-query]: Access denied for user 'www-data'@'localhost' (using password: NO) in /var/www/xxx.php on line 14
    Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /var/www/xxx.php on line 14

    Hier beschwert sich ein mysql_query(), dass keine Verbindung geöffnet ist. Wenn du keine Verbindungskennung übergibst, wird eine offene gesucht - was wohl misslang - oder mit Default-Daten eine zu erstellen versucht. Das ging auch nicht, deswegen die Meldungen.

    Diese Meldungen kommen also nur dann, wenn keine Verbindung besteht. Du bist also in deinem Programmfluss gar kein mysql_connect() ausgeführt.

    Bei meiner Recherche habe ich zwar rausgefunden dass sich bei der Datenbankverbindung in PHP5 etwas geändert hat, aber so richtig verstehen tue ich es nicht.

    Da du nicht genau sagst, was du da gelesen hast, kann ich nur raten, dass es die Lizenzgeschichte ist und die hat keine Auswirkungen auf die Handhabung innerhalb von PHP-Code.

    @$connect=mysql_pconnect("$db_host", "$db_user", "$db_pass") or die ("Nix geht Datenbankverbindung konnte leider nicht hergestellt werden");

    Nicht die Zuweisung sondern der Connect kann Fehler melden, weswegen das @ besser vor dem Funktionsnamen aufgehoben wäre. Aber wenn du schon Fehler suchst, dann solltest du sie nicht unterdrücken.

    Warum verwendest du Variablennamen in Anführungszeichen? Du kennst die Konsequenzen, die sich aus einen persistenten Datenbankverbindung ergeben, und die Bedingungen, die dafür erfüllt sein müssen?

    Lo!

    1. Ich habe zwar nur maximal die Hälfte Deiner Antwort verstanden, aber das hat genügt um mich auf due entscheidende Spur zu bringen!

      Warum verwendest du Variablennamen in Anführungszeichen? Du kennst die Konsequenzen, die sich aus einen persistenten Datenbankverbindung ergeben, und die Bedingungen, die dafür erfüllt sein müssen?

      Wenn ich so fit wäre, Dir diese Frage zu beantworten hätte ich wahrscheinlich keine Probleme.

      Besten Dank, Franz

      1. Hi!

        Ich habe zwar nur maximal die Hälfte Deiner Antwort verstanden, aber das hat genügt um mich auf due entscheidende Spur zu bringen!

        Wenn du bei Verständnisproblemen konkret nachfragst, kann ich/man dir dieses auch noch genauer zu erklären versuchen.

        Warum verwendest du Variablennamen in Anführungszeichen?

        Gern verwendet, aber komplett unnötig, solange nicht noch weiterer Text in dem String steht.

        Du kennst die Konsequenzen, die sich aus einen persistenten Datenbankverbindung ergeben, und die Bedingungen, die dafür erfüllt sein müssen?
        Wenn ich so fit wäre, Dir diese Frage zu beantworten hätte ich wahrscheinlich keine Probleme.

        Persistente Verbindungen können mehr Nachteile haben als sie auf den ersten Blick Vorteile bringen, wenn man sie nicht richtig verwendet. In aller Regel sollte man für "Wald- und Wiesen-Seiten" die nicht-persistente Variante verwenden, also mysql_connect() ohne p.

        Lo!