quakenet:#php Tutorial

Author: Progman, zuletzt bearbeitet von progman @ 2003/07/10 13:24:32

Bitte beachten Sie, dass die Tutorialkapitel zusammenhängen. Wenn sie direkt auf ein Kapitel verlinkt wurden müssen Sie gegebenenfalls die vorherigen Kapitel auch lesen. Achten Sie beim lesen darauf, dass Sie kein Kapitel überspringen.

Einen Query zu Datenbank senden

  1. Die Sprache von MySQL
  2. Query senden
  3. Mehrere Abfragen in einem Rutsch

1. Die Sprache von MySQL

Wir haben nun unsere Verbindung zur Datenbank aufgebaut. Und jetzt können wir uns mit der Datenbank 'unterhalten'. Wir sagen ihm dann "Du, mach mal dies und das" und er liefert dann eine Antwort. Wir sagen natürlich nicht "Erstelle eine Tabelle xy" sondern wir müssen eine ganz bestimmte Sprache benutzen. Diese Sprache nennt sich SQL. In dem Wort MySQL steckt dies auch drin. SQL steht für Structured Query Language. Also eine Strukturierte Abfrage Sprache. Und die ist in der Tat sehr Strukturiert. Es gibt sogar Definitionen wie diese Sprache aufgebaut ist, doch die Entwickler von Datenbanksystem erfinden immer neue Sachen hinzu, wie Microsoft neue HTML-Elemente...

Hier taucht das Wort Query auf. Es besteht aus 5 Buchstaben und wird genauso geschrieben. Eine weit verbreitete Variante im IRC ist Querry mit 2 r. Und dann gibt es noch weiter Varianten wie qry, kwärry, quärry und was weiß ich. Die Leute die das benutzen fühlen sich sowas von cool, aber diese Varianten sind alle FALSCH. Sie gibt es nicht. Nur das Wort Query gibt es. Wenn ihr die anderen Wörter in #php oder #php.de benutzt stellt euch darauf ein das ihr veräppelt oder sogar gekickt werdet.

2. Query senden

Um ein sogenannten MySQL-Query an die Datenbank zu senden benutzt man die Funktion mysql_query. Im Parameter steht dann der Befehl bzw. der Query drin, den man zu Datenbank senden möchte. Dieser Parameter muss vom Typ String sein.

<?php
    
// E_ALL, mysql_connect und so.

    
mysql_query("Mach was ganz tolles");
?>

Diese Funktion hat verschieden Rückgabewerte. Wichtig ist aber dass die Funktion auch false zurückliefern kann. Dies heißt dann, dass die MySQL-Datenbank diesen MySQL-Query nicht verstanden hat. Dies können wir dann mit einer If-Abfrage oder besser noch mit einer OR-Verknüpfung abfangen.

<?php
    
// E_ALL, mysql_connect und so.

    
$result = mysql_query("Mach was ganz tolles");
    if(!
$result) { // prüfen auf false
        
echo "Konnte die MySQL-Abfrage nicht verarbeiten <br />\n";
        echo
"MySQL-Antwort:".mysql_error();
        die();
    }

    
// oder

    
$result = mysql_query("Mach was ganz tolles") OR die(mysql_error());
?>

Mit mysql_error() können wir wieder erfahren, warum er den Query nicht ausführen konnte bzw. warum er ihn nicht verstanden hat.

Es eignet sich besonders, den Query, den man senden möchte, vorher in eine Variable zu speichern. Bei einem Fehler kann man dann noch den Query mit ausgeben, wo ein Fehler sein soll.

<?php
    
// E_ALL, mysql_connect und so.

    
$sql = "Mach was ganz tolles";

    
$result = mysql_query($sql) OR
              die(
"Query: <pre>".$sql."</pre>\n".
                  
"Antwort: ".mysql_error());
?>

3. Mehrere Abfragen in einem Rutsch

Um etwas schonmal vorweg zu nehmen, mehrere MySQL-Querys werden durch Semikolons getrennt. Aus Sicherheitsgründen führt PHP aber nur den 1. MySQL-Query aus. Wenn man mehrere MySQL-Querys ausführen möchte, muss man entsprechend so viele mysql_query-Befehle aufrufen, oder die Querys in einem Array speichern und eine foreach-Schleife benutzen.

<?php
    
// E_ALL, mysql_connect und so.

    
$sql="tu was;mach dies";
    
$result = mysql_query($sql) OR die(mysql_error());
    
// führt nur "tu was" aus, der andere MySQL-Query
    // wird ignoriert.

    
$sql="tu was";
    
$result = mysql_query($sql) OR die(mysql_error());
    
$sql="mach dies";
    
$result = mysql_query($sql) OR die(mysql_error());
    
// Dies geht ohne Probleme

    
$sqls = array("tu was", "mach dies", "und das");
    foreach(
$sqls as $sql) {
        
$result = mysql_query($sql) OR die(mysql_error());
    }
    
// so geht es auch
?>

Fragen zum aktuellen Thema

  1. Was ist SQL?
  2. Wie sende ich ein MySQL-Query zu einer Datenbank?
Was ist SQL?

SQL ist eine definierte Sprache, wie man Anfrangen an eine Datenbank sendet. Diese wurde 1992 definiert (nennt sich SQL92) wird aber von vielen Datenbanksystem verändert bzw. erweiterte.

Wie sende ich ein MySQL-Query zu einer Datenbank?

Mit der Funktion mysql_query sendet man einen MySQL-Query zu einer MySQL-Datenbank. Diese Funktion liefert unterschiedliche Rückgabewerte. Den Rückgabewert sollte man dann auf false prüfen und eine entsprechende Fehlermeldung ausgeben.

Nach oben