Hallo zusammen,
Ich stelle gerade meine "mysql()" Funktionen und Abfragen auf PDO um.
An mehreren Stellen im Code kommt in etwa folgendes vor.
Ein "Select" Element.
Wenn kein Eintrag in Tabelle => dann Anzeige im Select "Keine Einträge".
Wenn Einträge gefunden => Anzeigen
Bisher hatte ich es so gemacht:
--------------------------------------------------------------------------
<select name="users">
<?php
$result = mysql_query("SELECT username, uservorname FROM testuser");
$anzahl=mysql_num_rows($result);
if ($anzahl == 0){
echo"<option selected value="Keine Eintraege">Keine Eintraege</option>\n";
}
else{
while($var = mysql_fetch_array($result)){
echo"<option value="$var[username]">$var[uservorname]</option>\n";
}
}
?>
</select>
--------------------------------------------------------------------------
mich würde eure Expertenmeinung interessieren welche der nachfolgenden Varianten am besten ist oder ob es hinsichtlich Perforance Unterschiede gibt.
Möglichkeit 1:
$result = $DBO->query("SELECT username, uservorname FROM testuser");
if ($result->fetchColumn() < 1) {
echo"<option selected value="Keine Eintraege">Keine Eintraege</option>\n";
}
else{
while($var = $result->fetch(PDO::FETCH_ASSOC)){
echo"<option value="$var[username]">$var[uservorname]</option>\n";
}
Möglichkeit 2:
$sqlcheckuser = $DBO->query("SELECT count(*) as anzahl FROM testuser");
$sql_datauser = $sqlcheckuser->fetch(PDO::FETCH_ASSOC);
$anzahl = $sql_datauser['anzahl'];
if ($anzahl == 0){
echo"<option selected value="Keine Eintraege">Keine Eintraege</option>\n";
}else{
$result = $DBO->query("SELECT username, uservorname FROM testuser");
while($var = $result->fetch(PDO::FETCH_ASSOC)){
echo"<option value="$var[username]">$var[uservorname]</option>\n";
}
}
Möglichkeit 3:
try {
$result = $pdo->query('SELECT username, uservorname FROM testuser')->fetchAll();
} catch (PDOException $ex) {
$result = array();
}
$anzahl = count($result);
if ($anzahl == 0){
echo"<option selected value="Keine Eintraege">Keine Eintraege</option>\n";
}else{
foreach ($result as $row) {
echo"<option value="$row[0][username]">$row[0][uservorname]</option>\n";
}
}
Mir persönlich gefällt eigentlich Variante 1 mit "fetchColumn" ganz gut.
Möglichkeit 2 ist vom Code her am aufwändigsten.
Oder besser Variante 3 mit "try" und "catch"?
Oder gibt es noch eine viel einfachere Lösung?
Bin auf eure Meinung gespannt.
vielen Dank und viele Grüße
hawk