sebastian1992: PHP Problem

Hallo nochmal,

habe angefagen, etwas mehr über Objektorientierte Programmierung in PHP zu lernen und habe einfach mal ne kleine Testklasse geschrieben:

  
<?  
$mysql_server =   "localhost";  
$mysql_user = "root";  
$mysql_password = '';  
$mysql_database = "test";  
  
class User  
{  
  function __construct($uid)  
  {  
    $server = mysql_connect($mysql_server, $mysql_user, $mysql_password) or die(mysql_error());  
    mysql_select_db($mysql_databse, $server);  
  
    $this->uid = $uid;  
  }  
  
  public function user_print($mode)  
  {  
    switch($mode)  
    {  
      case "uid":  
        print "User ID: ".$this->uid;  
      break;  
  
      default:  
        print "unknown mode!";  
      break;  
    }  
  }  
}  
  
$user = new User(10);  
  
$user->user_print("uid");  
?>  

Aber er connectet nicht zur Datenbank. Das Merkwürdige ist, wenn ich $mysql_user durch "root" vertauche in mysql_connect() gehts, das ist doch verhext.

  1. Hi Sebastian,

    der Konstruktor der Klasse User kennt Deine Variablen $mysql_server, $mysql_user usw. nicht. Wenn Du die dort zur Verfügung haben willst, musst Du etwas dafür tun.

    Aber er connectet nicht zur Datenbank. Das Merkwürdige ist, wenn ich $mysql_user durch "root" vertauche in mysql_connect() gehts, das ist doch verhext.

    Was Du technisch ausführst, ist

      
    mysql_connect(NULL, NULL, NULL);  
    
    

    Wenn Du Dir die PHP-Fehlermeldung (bzw. Warnung) dazu anguckst (oder die Dokumentation von mysql_connect), dann siehst Du, dass die Funktion schlicht und einfach schlau genug war, manche der Angaben zu erraten. Nur mit dem User hast Du sie ausgetrickst ;-)

    Viele Grüße
    der Bademeister

  2. Hallo Sebastian,

    dir sei der Befehl

    error_reporting(E_ALL);

    zu Beginn des PHP-Skriptes nahegelegt. Damit werden dir entsprechende Warnungen angezeigt, mit denen du solche Fehler selbst finden und beheben kannst.

    Grüße

    Marc Reichelt || http://www.marcreichelt.de/

    --
    panic("Oh boy, that early out of memory?");
            linux-2.2.16/arch/mips/mm/init.c
    Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
  3. echo $begrüßung;

    Dass du mit dem auf E_ALL gestellten error_reporting zumindest die Ursache hättest angezeigt bekommen, wurde ja schon erwähnt.

    $mysql_server =   "localhost";
    $mysql_user = "root";
    $mysql_password = '';
    $mysql_database = "test";

    Wenn du für diese konstanten Werte Konstanten statt Variablen anlegtest, könntest du diese an jeder beliebigen Stelle im Script verwenden, denn Konstanten sind im Gegensatz zu Variablen global.

    echo "$verabschiedung $name";

    1. Moin!

      Wenn du für diese konstanten Werte Konstanten statt Variablen anlegtest, könntest du diese an jeder beliebigen Stelle im Script verwenden, denn Konstanten sind im Gegensatz zu Variablen global.

      Und Konstanten können auch nur zum Zeitpunkt ihrer Definition festgelegt und danach nicht mehr (unabsichtlich oder durch Sicherheitslücken) verändert werden - Variablen schon.

      - Sven Rautenberg

      --
      "Love your nation - respect the others."
  4. Hallo,

    habe angefagen, etwas mehr über Objektorientierte Programmierung in PHP zu lernen und habe einfach mal ne kleine Testklasse geschrieben:

    dann habe ich noch zwei generelle Empfehlungen, die mit deiner aktuellen Frage nichts zu tun haben.

    <?
    $mysql_server =   "localhost";
    $mysql_user = "root";
    $mysql_password = '';
    $mysql_database = "test";

    Gewöhne dir an, PHP-Abschnitte mit der Notation <?php einzuleiten, anstatt die Kurzform <? zu verwenden. Diese Kurzschreibweise (short_open_tags) ist bei vielen Hostern deaktiviert, weil sie Probleme bereiten kann, wenn man z.B. serverseitig xml verarbeiten möchte.

    Und grundsätzlich: Wähle einen aussagekräftigen Thread-Titel! Hier wäre z.B. "Connect zu mySQL schlägt fehl" ein guter Titel, während "PHP Problem" absolut nichts aussagt. Dass es um PHP geht, drückst du schon mit der Wahl der Kategorie aus, und irgendein Problem haben die meisten, die hier einen Thread eröffnen.

    Schönes Wochenende noch,
     Martin

    --
    Warum können wir heute so sicher sagen, dass Gott keine Frau sein kann?
    Weil dann nach "Es werde Licht" der nächste Satz "Wie sieht denn das hier aus?!" gewesen wäre.