Der Martin: mysql_* vs. mysqli_*

Beitrag lesen

Hi,

ich verstehe schon, wie Du es meinst.

wirklich?

Nach deinem Beispiel müsste es wie folgt gehen, aber ich möchte diese Übergabe in der Funktion vermeiden.

Warum? Das ist unter anderem einer der größten Nutzeffekte von Funktionen.

function testtest($db) {
$q = "SELECT * FROM artikel LIMIT 10";
$res = mysql_query($q);
// NEIN! Du meintest wohl: $res = mysqli_query($db, $q);
// Außerdem hast du vergessen, dein $res auch an die übergeordnete Funktion zurückzugeben.
}

$db = @mysqli_connect($dbserver, $dbuser, $dbpass);

testtest($db);

Nochmal: Eine Funktion ist ein Stückchen in sich abgeschlossener, gekapselter Code, der eine ganz bestimmte Aufgabe erledigt. Dazu bekommt er üblicherweise ein oder mehrere Aufrufparameter, und liefert ein Ergebnis zurück (return). In PHP (und ein paar anderen Sprachen) können Aufrufparameter optional sein, d.h. sie sind zwar im Funktionskopf definiert, können aber beim Aufruf je nach Situation auch weggelassen werden.

BEISPIEL:

function average(a, b, geo=false)
 { if (isset(geo) && geo)         // wenn der Parameter geo angegeben wurde und true ist ...
      av = sqrt(a*b);             // berechne den geometrischen Mittelwert
   else
      av = (a+b)/2;               // andernfalls den arithmetischen Mittelwert

   return (av);                   // und liefere den berechneten Wert als Ergebnis
 }

echo average(12, 15);             // optionaler Parameter fehlt, wird als false angenommen
                                  // Ausgabe: 13.5
echo average(32, 128, true);      // dritter Parameter ist angegeben und true
                                  // Ausgabe: 64

DISCLAIMER: Normalerweise hätte ich anstatt der if-Fallunterscheidung den ternären Operator verwendet. Aber hier habe ich aus didaktischen Gründen ausnahmsweise die Langform gewählt.

Es gibt ab und zu Sonderfälle - Funktionen, die auch ohne Aufrufparameter etwas Sinnvolles tun, oder Funktionen, die kein Ergebnis liefern, weil sie ihre Aufgabe anderweitig abfrühstücken.

Und was ist daran nun so kompliziert, dass du dich so dagegen sträubst?

So long,
 Martin

--
Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
- Douglas Adams, The Hitchhiker's Guide To The Galaxy