Datenbank connection Problem

  • Hallo zusammen,
    Ich habe das Webhosting Expert L de a1 Paket und habe ein Problem eine Verbindung von extern aufzubauen.
    Ich bekomme folgenden Fehler wenn ich versuche was von auserhalb auf meiner Datenbank zu speichern.
    Warning: mysql_connect(): Connection refused in /var/www/vhosts/hosting3381.af923.netcup.net/httpdocs/DB.php on line 5 no DB Connection
    Kann mir bitte jemand helfen ;(

  • Danke, nachdem du nach meiner IP gefragt hast habe ich sie überprüft und geändert.
    Dennoch habe ich ein Problem und zwar erscheint bei mir keine Fehlermeldung mehr, aber in meiner Datenbank wird auch nichts hinzugefügt.


    PHP
    <?php
        $sql_connect = mysql_connect("IP", "Name", "PW") or die ("no DB Connection");    mysql_select_db("DB_Name") or die ("DB not found");    $score= "7654";    mysql_query("INSERT INTO Test (Name) VALUES ($score)");    mysql_close($sql_connect);?>



    Habe ich da irgendwo einen Fehler?
    Ohne einer Fehlermeldung habe ich echt keine Chance nach einer Lösung zu suchen

  • Die mysql-Erweiterung von PHP ist übrigens veraltet und wird in Kürze entfernt: PHP: Choosing an API - Manual – Du solltest gleich mit mysqli oder PDO anfangen, wenn Du etwas neu entwickelst! ;)


    Wenn Du bei mysql_query() einen Fehler sehen willst, musst Du diesen auch explizit anfordern: PHP: mysql_errno - Manual & PHP: mysql_error - Manual (z.B. mit var_dump(), printf() oder was auch immer ausgeben, wenn der Query fehlschlägt)



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Nur so ganz am Rande, schreibst du gerade selbst ein Script oder versuchst du einem bereits exestierenden Script etwas beizufügen?


    Ich würde nur noch mysqli_x ab PHP 5.x benutzen, weil es neuer ist und die performance sowie sicherheit gegenüber mysql_x verbessert wurde.


    Aber nun kommen wir zu deinem eigentlichen Problem mein Lösungsansatz wäre der hier:



    Falls ich in meinem Code irgendwelche Fehler habe oder Operationen unschön wirken wäre ich über eine Kritik froh :)


    Hm da war der Killer wieder mal schneller typisch :P


    Edit: ($sql_connect->error), und anderes..

  • Nur als Tipp am Rande: mysqli kann auch von selbst Exceptions bei Fehlern werfen, das erspart einiges an Arbeit! Die kann man dann immer noch abfangen, um eigene Behandlungen zu implementieren:


    Code
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);


    Und wenn man schon mysqli verwendet, dann bitte auch gleich Prepared Statements, um SQL-Injection effektiv zu verhindern. Ist für das simple Beispiel natürlich übertrieben, wenn ein Typcast zur Absicherung reicht, aber das wird wohl kaum der vollständige Query bleiben: PHP: Prepared Statements - Manual



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Super, danke.
    Ihr seid die besten :)
    Noch ein kleine verständniss frage.
    Kann ich einfach so Mysqli verwenden? Muss noch irgendwas irgendwo eingestellt werden oder sind es
    einfach nur die Befehle die geändert werden?
    Vielen dank

  • In welchen Ordner sollte ich meine crossdomain.xml Datei speichern?


    Sowas braucht man 2015 immer noch? :D


    afaik (ist lange her), einfach in den Stammpfad, also dort wo auch die Dateien unter / liegen, damit sie nachher als example.com/crossdomain.xml aufrufbar ist.



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Danke :)
    Bekomme irgendwie dennoch eine Fehlermeldung von meiner Gameengine in der ich entwickle.
    So sieht momentan mein Script aus.


    Per WWW Funktion meines C# Scripts wird die Variable newName zu meinem php file geschickt und sollte in $name gespeichert und


    anschließend in meiner Datenbank geschrieben werden.
    Gibt es vielleicht noch irgendwo eine Sicherheitseinstellung die dies Verhindert?


  • Der Wert gehört in einfache Anführungszeichen beim INSERT, deshalb funktioniert es wahrscheinlich nicht. Ist aber auch egal, da Du hiermit das Paradebeispiel einer SQL-Injection-Lücke zeigst. Du musst die Werte vorher unbedingt maskieren (Stichwort mysqli_real_escape_string) oder wie schon weiter oben geschrieben gleich auf Prepared Statements setzen. Das ist in der PHP-Dokumentation eigentlich alles mit schönen Beispielen erklärt.


    Achja: Feld-/Tabellennamen solltest Du innerhalb von `` setzen. Gewöhne es Dir gleich so an, dann hast Du später weniger Probleme, wenn es sich dabei um gleichlautende Befehle handelt.



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • $_POST[''] direkt weg zuschreiben ohne was zu Prüfen ist eigentlich nun ja 'dämlich'. Filtern und Prüfen der Variable ist gerade in der Situation extrem wichtig, den $name = Post; $name in DB rein und schon gehört dir der Server nicht mehr. SICHERE solche Sachen extrem gut ab, benutzte SSL bei Formularen und so weiter.


    Kann C++ kein SQL? Würde mich extrem wundern weil du Äpfel und Birnen kombinierst obwohl Äpfel reichen.


    Nochwas: KEIN ROOT FÜR MYSQL LOGINS!

  • Noch als Information an die Leute die über diesen Beitrag stolpern, nachdem ich mal ein richtiges SQL-Script geschrieben hatte und keine Tabelle erzeugt wurde bin ich stuzig geworden. Nach durchgehen des Codes wo ich keine Fehler feststellen konnte, hatte ich mal Firebug angeschmissen direkt sprang mir ein "500-Error" in der Konsole entgegen. Nun schaust du mal in die Lighttpd (/var/log/lighttpd/error.log) rein und stellst fest das dort ein Eintrag mit

    Code
    (mod_fastcgi.c.2695) FastCGI-stderr: PHP Fatal error:  Class 'mysqli'

    ist. Natürlich wurde ich stuzig wieso diese Effekt auftrit, da hatte ich einen Beitrag bei Stackoverflow gefunden: Mysqli class not found. Using percona, php5-fpm, nginx, phalcon - Stack Overflow in dem die Lösung war bei $connect = new mysqli(host,user,pw,db); ein \ vor mysqli zu machen. Der Grund ist dieser: PHP: Using namespaces: fallback to global function/constant - Manual


    Webserver: lighttpd/1.4.35 (ssl) - a light and fast webserver | Build-Date: Nov 2 2014 03:47:15
    PHP: PHP 5.6.14
    MySQL: mysql Ver 14.14 Distrib 5.5.46
    FastCGI: 2.4.6