MySQL - Wählen Sie Abfrage

Die SQL SELECTBefehl wird verwendet, um Daten aus der MySQL-Datenbank abzurufen. Sie können diesen Befehl an der Eingabeaufforderung mysql> sowie in jedem Skript wie PHP verwenden.

Syntax

Hier ist die generische SQL-Syntax des SELECT-Befehls zum Abrufen von Daten aus der MySQL-Tabelle:

SELECT field1, field2,...fieldN 
FROM table_name1, table_name2...
[WHERE Clause]
[OFFSET M ][LIMIT N]
  • Sie können eine oder mehrere durch Kommas getrennte Tabellen verwenden, um verschiedene Bedingungen mithilfe einer WHERE-Klausel einzuschließen. Die WHERE-Klausel ist jedoch ein optionaler Teil des SELECT-Befehls.

  • Sie können ein oder mehrere Felder in einem einzigen SELECT-Befehl abrufen.

  • Sie können anstelle von Feldern den Stern (*) angeben. In diesem Fall gibt SELECT alle Felder zurück.

  • Sie können jede Bedingung mit der WHERE-Klausel angeben.

  • Sie können einen Versatz mit angeben OFFSETVon dort aus beginnt SELECT mit der Rückgabe von Datensätzen. Standardmäßig beginnt der Offset bei Null.

  • Sie können die Anzahl der Rücksendungen mit dem begrenzen LIMIT Attribut.

Abrufen von Daten von einer Eingabeaufforderung

Dies verwendet den SQL SELECT-Befehl, um Daten aus der MySQL-Tabelle abzurufen tutorials_tbl.

Beispiel

Im folgenden Beispiel werden alle Datensätze aus dem zurückgegeben tutorials_tbl Tabelle -

root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl 
+-------------+----------------+-----------------+-----------------+
| tutorial_id | tutorial_title | tutorial_author | submission_date |
+-------------+----------------+-----------------+-----------------+
|           1 | Learn PHP      | John Poul       | 2007-05-21      |
|           2 | Learn MySQL    | Abdul S         | 2007-05-21      |
|           3 | JAVA Tutorial  | Sanjay          | 2007-05-21      |
+-------------+----------------+-----------------+-----------------+
3 rows in set (0.01 sec)

mysql>

Abrufen von Daten mit einem PHP-Skript

Sie können denselben SQL SELECT-Befehl in einer PHP-Funktion verwenden mysql_query(). Diese Funktion wird verwendet, um den SQL-Befehl und später eine andere PHP-Funktion auszuführenmysql_fetch_array()kann verwendet werden, um alle ausgewählten Daten abzurufen. Diese Funktion gibt die Zeile als assoziatives Array, numerisches Array oder beides zurück. Diese Funktion gibt FALSE zurück, wenn keine Zeilen mehr vorhanden sind.

Das folgende Programm ist ein einfaches Beispiel, das zeigt, wie Datensätze aus dem abgerufen / angezeigt werden tutorials_tbl Tabelle.

Beispiel

Der folgende Codeblock zeigt alle Datensätze aus der Tabelle tutorials_tbl an.

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl';

   mysql_select_db('TUTORIALS');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }
   
   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "Tutorial ID :{$row['tutorial_id']}  <br> ".
         "Title: {$row['tutorial_title']} <br> ".
         "Author: {$row['tutorial_author']} <br> ".
         "Submission Date : {$row['submission_date']} <br> ".
         "--------------------------------<br>";
   } 
   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

Der Inhalt der Zeilen wird der Variablen $ row zugewiesen und die Werte in dieser Zeile werden dann gedruckt.

NOTE - Denken Sie immer daran, geschweifte Klammern zu setzen, wenn Sie einen Array-Wert direkt in eine Zeichenfolge einfügen möchten.

Im obigen Beispiel ist die Konstante MYSQL_ASSOC wird als zweites Argument für die PHP-Funktion verwendet mysql_fetch_array(), so dass die Zeile als assoziatives Array zurückgegeben wird. Mit einem assoziativen Array können Sie auf das Feld zugreifen, indem Sie dessen Namen anstelle des Index verwenden.

PHP bietet eine weitere Funktion namens mysql_fetch_assoc(), die auch die Zeile als assoziatives Array zurückgibt.

Beispiel

Das folgende Beispiel zeigt alle Datensätze aus der Tabelle tutorial_tbl mit der Funktion mysql_fetch_assoc () an.

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   
   $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date
      FROM tutorials_tbl';

   mysql_select_db('TUTORIALS');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }
   
   while($row = mysql_fetch_assoc($retval)) {
      echo "Tutorial ID :{$row['tutorial_id']}  <br> ".
         "Title: {$row['tutorial_title']} <br> ".
         "Author: {$row['tutorial_author']} <br> ".
         "Submission Date : {$row['submission_date']} <br> ".
         "--------------------------------<br>";
   } 
   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

Sie können auch die Konstante verwenden MYSQL_NUMals zweites Argument für die PHP-Funktion mysql_fetch_array (). Dadurch gibt die Funktion ein Array mit dem numerischen Index zurück.

Beispiel

Probieren Sie das folgende Beispiel aus, um alle Datensätze aus der Tabelle tutorials_tbl mit dem Argument MYSQL_NUM anzuzeigen.

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);

   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   
   $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date
      FROM tutorials_tbl';

   mysql_select_db('TUTORIALS');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }
   
   while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
      echo "Tutorial ID :{$row[0]}  <br> ".
         "Title: {$row[1]} <br> ".
         "Author: {$row[2]} <br> ".
         "Submission Date : {$row[3]} <br> ".
         "--------------------------------<br>";
   }
   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

Alle obigen drei Beispiele führen zum gleichen Ergebnis.

Speicher freigeben

Es wird empfohlen, den Cursorspeicher am Ende jeder SELECT-Anweisung freizugeben. Dies kann mithilfe der PHP-Funktion erfolgenmysql_free_result(). Das folgende Programm zeigt anhand eines Beispiels, wie es verwendet werden soll.

Beispiel

Probieren Sie das folgende Beispiel aus:

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);

   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   
   $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date
      FROM tutorials_tbl';

   mysql_select_db('TUTORIALS');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }
   
   while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
      echo "Tutorial ID :{$row[0]}  <br> ".
         "Title: {$row[1]} <br> ".
         "Author: {$row[2]} <br> ".
         "Submission Date : {$row[3]} <br> ".
         "--------------------------------<br>";
   }
   mysql_free_result($retval);
   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

Während Sie Daten abrufen, können Sie einen so komplexen Code schreiben, wie Sie möchten. Die Vorgehensweise bleibt jedoch dieselbe wie oben beschrieben.