XAMPP PHP Config?

2 Antworten

Das wäre zunächst einmal davon abhängig, mit was für einem DBMS du dich nun konkret verbinden möchtest.

Im Standardpaket von XAMPP wird eine MariaDB (Ableger von MySQL) mitgeliefert. Dementsprechend ist XAMPP dafür auch schon vorkonfiguriert. Du brauchst über das XAMPP Control Panel lediglich die Services Apache (also den Webserver) sowie MySQL (den Datenbankserver) starten.

Via PHP kannst du dich anschließend leicht verbinden. Die Standardbibliothek bietet hierfür zwei mögliche Module an: MySQLi (explizit für MySQL/MariaDB) oder PDO.

Beispiel:

<?php
  $connection = new mysqli('localhost', 'root', '', 'database name');

  if ($connection->connect_errno) {
    print $connection->connect_error;
    exit;
  }

  // send some SQL query ...

Für einen Verbindungsaufbau benötigst du mindestens den Hostnamen (lokal wäre das localhost), den Nutzernamen und das Passwort (siehe auch hier). Im obigen Beispiel habe ich den Standardnutzer der MariaDB von XAMPP angegeben.

Wenn es schon eine Datenbank im DBMS gibt, kannst du die mit dem vierten Argument vorauswählen. Über ein fünftes Argument könntest du noch die Portnummer des SQL-Servers angeben. Das ist aber nur notwendig, wenn du diese in der Konfiguration explizit geändert hast. Standard ist die 3306. Die Portnummer kannst du übrigens auch über das Control Panel einsehen (sobald der MySQL-Dienst gestartet wurde) oder (über den Config-Button in der INI-Datei) ändern.

Weitere Informationen zur Verwendung des MySQLi-Moduls (oder PDO) findest du im jeweils oben verlinkten Abschnitt der Dokumentation.

Solltest du eine externe Datenbank ansprechen wollen, müssten im Voraus ein paar Details zu dieser geklärt werden:

  1. Wo läuft der Datenbankserver? Erlaubt er überhaupt einen direkten Verbindungsaufbau mit deinem Server? Ein Webhosting-Service würde so etwas beispielsweise unterbinden.
  2. Wie lauten die Verbindungsdaten (s.o.)?
  3. Was für eine Art DBMS (MySQL/MariaDB/MSSQL/Oracle DB/PostgreSQL/...) liegt überhaupt vor?

Je nach DBMS kann es notwendig sein, noch zusätzliche Treiber zu installieren/aktivieren und auf ein entsprechendes PHP-Modul zurückgreifen zu müssen (PDO liefert bspw. einen breiten Support, die bereits verfügbaren/aktivierten Treiber kannst du dir mit getAvailableDrivers ausgeben lassen).

Neue Treiber werden üblicherweise im php/ext-Ordner abgelegt (ausgehend vom XAMPP-Installationsverzeichnis) und in der php/php.ini aktiviert (lies dennoch zusätzlich in der Dokumentation nach, ob es noch weiterer Konfiguration bedarf).

Beispiel für den PDO PostgreSQL-Treiber:

extension=pdo_pgsql

In der php.ini-Datei gibt es einen Abschnitt, in dem die installierten Extensions aufgelistet werden. In diesem kann der Name der installierten Treiber-Extension mit angelegt werden. Achte darauf, dass vor der Zeile kein Semikolon steht, denn das markiert einen Kommentar.

Den Apache-Server solltest nach Änderung der php.ini-Datei einmal neustarten.

Hallo, du musst hierzu eine neue conf.inc.php file generieren die so aussehen kann:

<?php

 try

 {

   global $con;

   $server = 'localhost:3307';

   $user = 'root';

   $pwd = '';

   $schema = '';

   $con = new PDO('mysql:host='.$server.';schema = '.$schema.';charset=utf8', $user,$pwd);

   $con->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

}

catch(Exception $e)

{

 echo $e->getCode().': '.$e->getMessage();

}

Zu beachten hierbei ist, das du dein Schema hier noch in den Parameter gibst.

Ebenfalls kann ich dir eine functions file zu herzen legen, in welcher du deine Funktionen rein gibst, ich schicke hierzu noch eine funciton php mit einigen Grundfunktionen mit, wie das ausgeben einer Tabelle:

<?php

function getSite($site)

{

  if(isset($_GET['site']))

  {

    include_once('site/'.$_GET['site'].'.php');

  }else {

    include_once('site/'.$site.'.php');

  }

}

 

function makeStatement ($query, $array = null)

{

  try

  {

    global $con;

    $stmt = $con->prepare($query);

    $stmt->execute($array);

    return $stmt;

  }

  catch (Exception $e)

  {

    return $e;

  }

}

function showDatabases($query, $array = null)

{

  global $con;

  $stmt = makeStatement($query, $array);

  if ($stmt instanceof Exception)

  {

      echo $stmt->getCode().': '.$stmt->getmessage();

  }

  else

  {

    //Tabelle erstellen

    $meta = array();

 

    //Spaltenüberschrift dynamisch

    echo '<table class="table">

       <tr>';

    for($i = 0; $i < $stmt->columnCount(); $i++)

    {

      $meta[] = $stmt->getColumnMeta($i);

      echo '<td>'.$meta[$i]['name'].'</td>';

    }

    echo '</tr>';

    /*zugriff auf arrayelemente

    FETCH_ASSOC: $row['id']

    FETCH_NUM: $row[0]

    */

    while($row = $stmt->fetch(PDO::FETCH_ASSOC))

    {

      echo'<tr>';

      foreach($row as $r)

      {

        echo '<form method = "post">';

        echo '<td>'.$r.'</td>';

        echo '<td>';

        

          echo '<div class="form-group">

              <button type="submit" name="save" class="btn btn-secondary">Auswahl</button>';

          echo '<input type="hidden" id="selectedSchema" name="selectedSchema" value='.$r.'>';

          echo '</div>';

        echo '</td>';

        echo '</form>';

      }

      echo'</tr>';

    }

    echo '</table>';

  }

}

 

function showTables($query, $array = null, $schema = null)

{

  global $con;

  $stmt = makeStatement($query, $array);

  if ($stmt instanceof Exception)

  {

      echo $stmt->getCode().': '.$stmt->getmessage();

  }

  else

  {

    //Tabelle erstellen

    $meta = array();

 

    //Spaltenüberschrift dynamisch

    echo '<table class="table">

       <tr>';

    for($i = 0; $i < $stmt->columnCount(); $i++)

    {

      $meta[] = $stmt->getColumnMeta($i);

      echo '<td>'.$meta[$i]['name'].'</td>';

    }

    echo '</tr>';

    /*zugriff auf arrayelemente

    FETCH_ASSOC: $row['id']

    FETCH_NUM: $row[0]

    */

    while($row = $stmt->fetch(PDO::FETCH_ASSOC))

    {

      echo'<tr>';

      foreach($row as $r)

      {

        echo '<form method = "post">';

        echo '<td>'.$r.'</td>';

        echo '<td>';

          echo '<div class="form-group">'; /*Wenn man auf einer anderen Seite mit den Werten hier arbeiten möchte muss man diese*/

                           /*mit einer versteckten Inputfeld mitschicken und alles muss in einer Form sein*/

          echo '<button type="submit" name="savedescription" class="btn btn-secondary">Tabellenbeschreibung</button>';

          echo '<input type="hidden" id="description" name="description" value='.$r.'>';

          echo  '                              ';

          echo '<button type="submit" name="savecontents" class="btn btn-secondary">Inhalt der Tabelle</button>';

          echo '<input type="hidden" id="contents" name="contents" value='.$r.'>';

          echo '<input type="hidden" id="selectedSchema" name="selectedSchema" value='.$schema.'>';

          echo '</div>';

        echo '</td>';

        echo '</form>';

      }

      echo'</tr>';

    }

    echo '</table>';

  }

}

 

 

function showTable($query, $array = null, $schema = null, $table = null)

{

  global $con;

  $stmt = makeStatement($query, $array);

  if ($stmt instanceof Exception)

  {

      echo $stmt->getCode().': '.$stmt->getmessage();

  }

  else

  {

    //Tabelle erstellen

    $meta = array();

 

    //Spaltenüberschrift dynamisch

    echo '<table class="table">

       <tr>';

    for($i = 0; $i < $stmt->columnCount(); $i++)

    {

      $meta[] = $stmt->getColumnMeta($i);

      echo '<td>'.$meta[$i]['name'].'</td>';

    }

    echo '</tr>';

    /*zugriff auf arrayelemente

    FETCH_ASSOC: $row['id']

    FETCH_NUM: $row[0]

    */

    while($row = $stmt->fetch(PDO::FETCH_ASSOC))

    {

      echo'<tr>';

      foreach($row as $r)

      {

        echo '<form method = "post">';

        echo '<td>'.$r.'</td>';

        echo '<td>';

          echo '<div class="form-group">';

          echo '<input type="hidden" id="description" name="description" value='.$r.'>';

          echo '<input type="hidden" id="contents" name="contents" value='.$r.'>';

          echo '<input type="hidden" id="selectedSchema" name="selectedSchema" value='.$schema.'>';

          echo '<input type="hidden" id="table" name="table" value='.$table.'>';

          echo '</div>';

        echo '</td>';

        echo '</form>';

      }

      echo'</tr>';

    }

    echo '</table>';

  }

}

Außerdem musst du diese beiden Files dann noch inkludieren, dazu füge folgenden Code in den Body deiner Index datei ein:

<main class="container">

  <div class="bg-body-tertiary p-5 rounded">

  <?php

    include_once('function/function.php');

    include_once('function/conf.inc.php');

    getSite('home');

  ?>

  </div>

</main>


regex9  29.06.2024, 23:56

Dein Code enthält Fehler (z.B. wird invalides Markup zusammengebaut) und schlechte Praktiken (z.B. fehlende Trennung von Struktur und Logik, globale Variablen, fehlende Eingabeprüfung, etc.). Er ist nicht zur weiteren Nutzung empfehlbar.

0