Thema: Verbindung aufnehmen, Datensätze abfragen


Datensätze abfragen und anzeigen

MySQL

In einem PHP-Programm können die Datensätze mit der Anweisung select ausgewählt und abgefragt werden.

  • Einfache Abfrage
  • Die folgende Befehlszeile gibt den gesamten Inhalt einer Tabelle aus.
        SELECT * FROM lab_tblpersonen;
    Sollen nur einzelne Spalten von der ganzen Tabelle angezeigt werden, muss der Operator * durch die Spaltennamen ersetzt werden.
        SELECT vorname, name, gehalt FROM lab_tblpersonen;
  • Einfache Abfrage mit DISTINCT
  • Mit der Option DISTINCT können Duplikate ausgefiltert werden.
        SELECT DISTINCT personalnummer FROM lab_tblpersonen;
  • Abfrage mit Bedingung
  • Der folgende Befehl gibt die komplette Zeile aus, bei der in der Spalte zulage 300 steht.
        SELECT * FROM lab_tblpersonen WHERE zulage = 300;
    Wenn Sie nach einem Wort wie Schmitz suchen, müssen Sie dieses in zwei Hochkommas setzen.
        SELECT * FROM lab_tblpersonen WHERE name = 'Schmitz';
    Um die Datensätze zwischen 3000 und 5000 auszugeben können Sie BETWEEN verwenden.
        SELECT * FROM lab_tblpersonen WHERE gehalt BETWEEN 3000 AND 5000;
  • Abfrage mit Platzhalter
  • Wenn Sie nicht genau wissen, an welcher Stelle das Wort Schmitz steht welches Sie suchen, können Sie den Platzhalter % verwenden. Der Platzhalter % steht für beliebig viele Zeichen. Weiterhin müssen Sie das = durch LIKE ersetzen.
        SELECT * FROM lab_tblpersonen WHERE name LIKE '%Schmitz%';
    Ein weiterer Platzhalter ist der Unterstrich. Dieser steht für genau ein Zeichen.
        SELECT * FROM lab_tblpersonen WHERE name LIKE 'S__z';
  • Verknüpfung von Bedingungen
  • Werden zwei Bedingungen mit einem AND verknüpft, müssen beide Bedingungen erfüllt werden.
        SELECT * FROM lab_tblpersonen WHERE gehalt > 3000 AND < 5000;
    Werden zwei Bedingungen mit einem OR verknüpft, muss mindestens eine Bedingung erfüllt sein.
        SELECT * FROM lab_tblpersonen WHERE gehalt = 3000 OR gehalt = 5000;
    Mit der Bedingung NOT kann man das Ergebnis einer Bedingung negieren.
        SELECT * FROM lab_tblpersonen WHERE gehalt < 5000 AND NOT gehalt = 3000;
    Werden mehrere Bedingungen miteinander verknüpft, müssen gegebenenfalls Teile der Abfrage in Klammern gesetzt werden.
        SELECT * FROM lab_tblpersonen WHERE gehalt < 3000 OR (name = 'Schmitz' AND gehalt = 5000);

Datensätze abfragen

<form action = "c52.php" method = "post">
  <div class="form-group">
        <label>Untergrenze</label>
        <input type="text" name="ug" placeholder="Enter Gehaltsuntergrenze"/>
    </div>
    <div class="form-group">
        <label>Obergrenze</label>
        <input type="text" name="og" placeholder="Enter Gehaltsobergrenze"/>
    </div>
    <div class="form-group">
        <button class="button dark" name="send">Send</button>
	</div>
</form>
<?php
if(isset($_POST["send"])){
    	$db= mysqli_connect("localhost", "user", "password", "datenbank");
	if (mysqli_connect_errno()) {
  		echo "Failed to connect to MySQL: " . mysqli_connect_error();
  		exit();
	}
	$ug = $_POST["ug"];
	$og = $_POST["og"];
	$sqlstr = "select * from lab_tblpersonen where gehalt >=  '$ug'
   	and gehalt <=  '$og' order by gehalt";
	$res = mysqli_query($db, $sqlstr);
   $num = mysqli_num_rows($res);
   if ($num==0) {
      echo "Keine passenden Datensätze gefunden!";
   } else { 
?>
	<table class="table striped">
	<thead>
	<tr><th>Lfd. Nr.</th><th>Name</th>
	<th>Vorname</th><th>Personalnummer</th>
	<th>Gehalt</th><th>Zulage</th><th>Geburtstag</th></tr>
	</thead><tbody>

<?php	while ($dsatz = mysqli_fetch_assoc($res)) { ?>
		<tr>
      <td><?php echo $dsatz["id"]; ?></td>
		<td><?php echo $dsatz["name"]; ?></td>
		<td><?php echo $dsatz["vorname"]; ?></td>
		<td><?php echo$dsatz["personalnummer"]; ?></td>
		<td><?php echo number_format($dsatz["gehalt"],2,",","."); ?></td>
		<td><?php echo number_format($dsatz["zulage"],2,",","."); ?></td>
		<td><?php echo $dsatz["geburtstag"]; ?></td>
		</tr>      
<?php	} ?>
	</tbody></table>
<?php	  }
	mysqli_free_result($res);
	mysqli_close($db); 
}    
?>

Datensätze abfragen