Nachdem Sie nun wissen, wie man Datenbanktabellen erzeugt und entfernt, wollen wir Ihnen nun noch zeigen, wie Sie Änderungen an der Datenbanktabellenstruktur vornehmen können. 
 
Sie haben die Möglichkeit, einzelne Felder hinzuzufügen, zu löschen oder deren Typ zu ändern. Die Änderungen erfolgen dabei mithilfe der MySQL-Anweisung ALTER, die Sie mit query() oder mysqli_query() an den Server senden. 
 
 
Felder hinzufügen 
 
Das folgende Beispiel demonstriert, wie neue Felder in eine Datenbanktabelle eingefügt werden kann: 
 
<?php 
 
// Verbindungs-Objekt samt Zugangsdaten festlegen 
@$db = new mysqli('localhost', 'matthias', 'geheim', 'Verein'); 
 
// Verbindung überprüfen 
if (mysqli_connect_errno()) { 
  printf("Verbindung fehlgeschlagen: %s\n", mysqli_connect_error()); 
  exit(); 
} 
 
// SQL-Befehl 
$sql_befehl = "ALTER TABLE Mitglieder ADD Telefon CHAR(14)"; 
 
if ($db->query($sql_befehl)) { 
  // Meldung bei Erfolg 
  echo "Datenbanktabelle wurde erfolgreich erweitert.";   
} else { 
  // Meldung bei Fehlschlag 
  echo "Datenbanktabelle konnte nicht geändert werden!"; 
} 
 
// Verbindung zum Datenbankserver beenden 
$db->close(); 
 
?>  
Im vorliegenden Beispiel wird das Feld Telefon mit dem Typ CHAR hinzugefügt. 
 
 
Feldtyp ändern 
 
Wollen Sie den Typ eines bestehenden Feldes ändern, lässt sich dies wie folgt umsetzen: 
 
<?php 
 
// Verbindungs-Objekt samt Zugangsdaten festlegen 
@$db = new mysqli('localhost', 'matthias', 'geheim', 'Verein'); 
 
// Verbindung überprüfen 
if (mysqli_connect_errno()) { 
  printf("Verbindung fehlgeschlagen: %s\n", mysqli_connect_error()); 
  exit(); 
} 
 
// SQL-Befehl 
$sql_befehl = "ALTER TABLE Mitglieder MODIFY Telefon INTEGER"; 
 
if ($db->query($sql_befehl)) { 
  // Meldung bei Erfolg 
  echo "Datenbanktabelle wurde erfolgreich modifiziert.";   
} else { 
  // Meldung bei Fehlschlag 
  echo "Datenbanktabelle konnte nicht modifiziert werden!"; 
} 
 
// Verbindung zum Datenbankserver beenden 
$db->close(); 
 
?>  
Nun besitzt das Feld Telefon den Typ INTEGER. 
 
Achtung: Das Ändern des Typs eines Feldes sollte äußerst sorgfältig durchgeführt werden. Nicht jeder Typ lässt sich in einen anderen Typ umwandeln. Daher ist darauf zu achten, dass es zu keinem Datenverlust kommt. 
 
  Feld löschen 
 
Das Löschen von Feldern bereitet keine Schwierigkeiten. Natürlich sollte klar sein, dass die Entfernung eines Feldes grundsätzlich zu einem Datenverlust führt. 
 
<?php 
 
// Verbindungs-Objekt samt Zugangsdaten festlegen 
@$db = new mysqli('localhost', 'matthias', 'geheim', 'Verein'); 
 
// Verbindung überprüfen 
if (mysqli_connect_errno()) { 
  printf("Verbindung fehlgeschlagen: %s\n", mysqli_connect_error()); 
  exit(); 
} 
 
// SQL-Befehl 
$sql_befehl = "ALTER TABLE Mitglieder DROP COLUMN Telefon"; 
 
if ($db->query($sql_befehl)) { 
  // Meldung bei Erfolg 
  echo "Datenbankfeld wurde erfolgreich gelöscht.";   
} else { 
  // Meldung bei Fehlschlag 
  echo "Datenbankfeld konnte nicht gelöscht werden!"; 
} 
 
// Verbindung zum Datenbankserver beenden 
$db->close(); 
 
?>  
Ermitteln der Tabellenstruktur via MySQLi-Unterstützung 
 
Die meisten Methoden, die Informationen über Tabellen und Felder liefern, beziehen sich auf die Tabelleninhalte (Ergebnistabellen). Wie gelangt man jedoch an die Tabellenstruktur? – Selbstverständlich steht Ihnen auch hierfür eine Kombination aus SQL-Abfragen und MySQLi-Methoden zur Verfügung, die es Ihnen ermöglichen, auf die Tabellenstruktur zuzugreifen. 
 
Beispiel – DESCRIBE 
<?php 
 
// Verbindungs-Objekt samt Zugangsdaten festlegen 
@$db = new mysqli('localhost', 'matthias', 'geheim', 'Verein'); 
 
// Verbindung überprüfen 
if (mysqli_connect_errno()) { 
  printf("Verbindung fehlgeschlagen: %s\n", mysqli_connect_error()); 
  exit(); 
} 
 
// SQL-Befehl 
$sql_befehl = "DESCRIBE Mitglieder"; 
 
if ($resultat = $db->query($sql_befehl)) { 
  // Abfrageergebnis durchlaufen 
  while($feldinfo = $resultat->fetch_assoc()) 
  { 
    // Datenfeldinformationen durchlaufen 
    foreach ($feldinfo as $wert) 
    { 
      if (!empty($wert)) 
      { 
        echo $wert . " / "; 
      } 
    } 
    echo "<br>"; 
  } 
  $resultat->close(); 
} else { 
  // Meldung bei Fehlschlag 
  echo "Datenbanktabelle konnte nicht modifiziert werden!"; 
} 
 
// Verbindung zum Datenbankserver beenden 
$db->close(); 
 
?>  
Ausgabe 
MitgliedID / int(11) / NO / PRI / auto_increment / 
MitgliedVorname / char(40) / YES / 
MitgliedNachname / char(40) / YES / 
Aufgabe / char(40) / YES / 
Geburtsdatum / date / YES / 
 
 
  |