# mysqli und XAMPP



## Don Stefano (25. Februar 2005)

Hallo zusammen,

    ich betreibe mit XAMPP eine php Entwicklungsumgebung auf meinem PC. 

 Während der Entwicklung eines Systems, welches später einmal die Daten mehrerer verschiedener Quizspiele und Fragebögen - zugehörig zu bestimmten Personen - in einer mysql Datenbank speichern und abrufen soll, bin ich auf folgendes Problem gestoßen.

 Ich wollte nun erst einmal etwas mit einer Benutzerverwaltung herumprobieren, die mittels Datenbankeinträgen und Sessions verschiedene User verwalten kann. Da ich als Einsteiger um ehrlich zu sein, mit den hier häufig zitierten Tutorials nicht gut klarkomme, versuche ich mittels einer meiner php Bücher (php5 & MySql 4.1) ein Anmeldeskript zu verwenden, welches in dem Buch bei einem Votingsystem verwendet wird. 

    Ich beabsichtige (bzw. habe schon)  alles um das Voting zu entfernen und die Anmeldung für meine eigenen Zwecke anzupassen.

 Ich bin eigentlich sicher, dass ich dies so weit auch richtig gemacht habe. Auf einer ersten Seite, wird mit 2 html-Formularen die Möglichkeit gegeben sich einzuloggen oder als User neu anzulegen.

 Wenn ich nun z.B. irgendeinen Namen eingebe und mich einlogge (was nicht funktionieren dürfte wenn ich mich als User noch nicht angelegt habe) erhalte ich die Fehlermeldung:


```
Fatal error:  Class 'mysqli' not found in C:\xampp\htdocs\don3\admin\xmysqli.php on line 3
```
 
    Die Datei xmysqli.php legt verschiedene Parameter fest. Hier der Code:


```
<?php
    
    class xmysqli extends mysqli {
    
    	const host	= "localhost";
    	const user	= "root";
    	const passwd  = "";
    	const mydb	= "votum";
    
    	  function __construct()
    	  {
    		 parent::__construct(self::host, self::user, self::passwd, self::mydb);
    	  }
    	
    	function echoquery($query)
    	{
    		echo "<p>$query</p>";
    		$result = $this->query($query);
    		if ($this->errno) 
    		{
    			echo($this->error);
    			return NULL;
    		}
    		
    		echo '<table border cellpadding="5"><tr>';
    		echo '<th>[Nr]</th>';
    		while ($field = $result->fetch_field())
    			echo "<th>$field->name</th>";
    		echo "</tr>";
    		$rec = 0;
    		while ($row = $result->fetch_row())
    		{
    			echo "<tr><td>$rec</td>"; $rec++;
    			for ($i = 0; $i < $result->field_count; $i++)
 		 	echo "<td>".htmlentities($row[$i])."&nbsp;</td>";
    			echo "</tr>\n";
    		}
    		echo "</table>";
    		$result->close();
    		return TRUE;
    	}
    }
    ?>
```
 

 Mir ist schon klar, dass die Klasse "mysqli" fehlt. Auch dass sie Befehle / Funktionen betrifft, die erst ab MySql 4.1 vorliegen. 

 Ich habe die neueste XAMPP Version installiert, mit php 5.0.3 und mysql 4.1.10. Unterstützt XAMPP mysqli nicht, oder was habe ich nicht verstanden ?

    Ich weiß leider nicht mehr weiter.

   Bin dankbar für jede Hilfe und vermute es ist keine große Sache das Problem zu beheben, oder ?


----------



## time-master (25. Februar 2005)

Da es die Klasse nicht gibt, wird diese Fehlermeldung angezeigt. Wenn es die Klasse "mysqli" doch gibt, so muss diese über der anderen Klasse stehen!


----------



## Don Stefano (25. Februar 2005)

Das hilft mir leider auch nicht weiter. Kann mir niemand einmal in einfachen Worten erklären, was ich tun muss, um diese Extensions Klasse mysqli auch verwenden zu können ? Muss ich irgendwo etwas herunterladen ? Etwas verstellen ?

 Danke an denjeningen, der sich erbarmt mich aufzuklären.


----------



## micha-bbg (25. Februar 2005)

Hi,
 wäre interessant zu wissen, welches Betriebssystem Du verwendest. Bei Windows musst Du in der php.ini das Semikolon vor 'extension=php_mysqli.dll' entfernen. Wie das bei XAMMP und Linux ist, kann ich Dir leider nicht sagen.

 MfG Micha


----------



## Don Stefano (25. Februar 2005)

Hi Micha,

 danke für den Hinweis. Ich benutze ganz einfach ein Windows XP System.

 Ich habe gerade mal nach der php.ini gesucht. Ich habe davon mehrere. Weißt du zufällig welche ich ändern muss? Oder betrifft es mehrere ?

 Ich habe in c:\xampp\php eine php.ini, eine php5.ini und eine php.ini-recommended.

 In c:\xampp\apache\bin habe ich auch eine php.ini.

 Muss ich diese alle ändern ?


----------



## cofter (25. Februar 2005)

Sollte die php.ini dann net in C:\windows liegen?
Ist bei mir der Fall.
mfg
Marko


----------



## micha-bbg (25. Februar 2005)

Don Stefano hat gesagt.:
			
		

> In *c:\xampp\apache\bin* habe ich auch eine *php.ini*.
> Muss ich diese alle ändern ?


Die sollte es sein, aber schau mal auf http://www.apachefriends.org/f/ die kennen sich mit den internen Sachen von XAMMP wohl etwas besser aus. Gerade die Speicherorte für die config-Dateien scheinen bei XAMMP etwas anders zu sein, ich kenne auch nur die "normale" Insallation unter Win bzw Linux.

    MfG Micha


----------



## Don Stefano (25. Februar 2005)

@ cofter  

 Nein bei mir liegt in Windows keine php.ini. Das scheint von der Art bzw. dem Ort der Installation abzuhängen

 @ micha bbg  

 In meiner php.ini gibt es keinen solchen Pfad. Wohl existiert aber die dazugehörige dll Datei. Also habe ich den Pfad 'extension=php_mysqli.dll' einfach hinzugefügt. Seit dem bleibt die Fehlermeldung aus. Dafür erscheinen andere ;-)
 Es scheint mir aber daran zu liegen, dass auf eine Datenbank und Tabelle zugegriffen werden soll, die noch nicht exisitert. Ich forsche in der Richtung mal weiter, lege eine solche Tabelle an und hoffe ich komme auch weiter.

 Vielen Dank an euch alle !


----------



## mogli678 (26. Februar 2005)

Um zukünftig Informationen darüber zu erhalten wie dein PHP auf deinem Server konfiguriert ist, erstelle einfach eine *.php Datei in deinem www root Verzeichnis mit folgendem Inhalt.

  <?php phpinfo(); ?>

 Nach Aufruf dieser Seite werden dir alle Informationen zur PHP Konfiguration auf deinem System gezeigt, auch der Pfad zur benutzten php.ini Datei.

  Viel Erfolg, Roland


----------



## Don Stefano (26. Februar 2005)

Danke für den Tip mit  
	
	
	



```
<?php phpinfo(); ?>
```
 . Daran hatte ich nciht gedacht. 

 Eine Frage hätte ich dennoch: Wenn ich meine Programme denn einmal später auf einen echten Webserver verlege, habe ich dann da auch Einfluß auf die Einstellungen der php.ini ?

 Oder kann es mir dann passieren, dass die mysqli Extensions da abgestellt sind, so wie es jetzt erst bei mir war ?

 Gibt es dann eine andere Möglichkeit sich die mysqli.dll verfügbar zu machen ?

 Viele Grüße
 Don


----------



## split (27. Februar 2005)

Normalerweise hast du keinen Einfluss auf deine php.ini, es sei denn du nimmst einen vServer/Root-Server!


----------



## mogli678 (27. Februar 2005)

Die *mysqli *Schnittstelle setzt auf dem Server PHP5 und MySQL 4.1 (oder neuere Versionen voraus). Die meisten Webhoster verhalten sich was Updates angeht weitestgehend konservativ, da die laufenden Umgebungen ja funktionieren. Du musst dich am besten vorher nach einem Webhoster umsehen und dann entsprechend deine Seiten entwickeln. Du kannst aber ebenso gut die *mysql* Schnittstelle zu deiner DB verwenden. mysqli beitet mehr Funktionen als die mysql Schnittstelle.

  Viel Erfolg
  Roland


----------

