Moin!
Es ist halt einfacher als mysql_num_rows($sql),
oder mysql_fetch_array($sql), auswerten usw.// also so:
mysql_query("select id from tbl where id='223'");
if(mysql_affected_rows() !=1){$say = "Einfach und gut";}
Und woher willst du wissen, ob dein Query funktioniert hat? Fehlerbehandlung etc. fehlen hier komplett! Ist ja grausam, sowas!
Du kannst auf die Auswertung der Ressoure, die von mysql_query zurückkommt, nicht verzichten. Die ist im Fehlerfall nämlich FALSE, und das muß man abfangen, ansonsten landet man bei unschönen Fehlerabbrüchen.
Und wenn du ein SELECT machst, dann willst du ja sowieso den Inhalt dieser Abfrage wissen - und den kriegst du ebenfalls nur mit Ressource-Handle, nicht ohne.
Und wenn du das Ressource-Handle sowieso hast, kannst du auch einfach
$res = mysql_query();
if (mysql_num_rows($res) != 1) ...
machen.
Du sprachst vom gewaltigen Performance-Verlust mit mysql_num_rows bei großen Abfragen? Bitte nimm mal Kontakt zur Realität auf! Du fragst in deinem Beispiel genau eine Zeile ab. Das ist keine "große" Abfrage.
Außerdem: mysql_query kopiert die gesamten DB-Ergebnisse in einen PHP-Zwischenspeicher. _Das_ ist bei großen Abfragen die Performancebremse. Auf ein abgefragtes Ergebnis mal eben mysql_num_rows() anzuwenden ist dagegen ein Kinderspiel.
Und wenn du mysql_unbuffered_query verwendest, um die Performancebremse durch insbesondere den Speicherverbrauch bei großen Abfragen zu umgehen, mußt du sowieso wissen, was du tust, und kannst nicht mehr mit der Begründung "Das ist aber einfacher" kommen.
- Sven Rautenberg