Mailinglisten-Archive |
Aloha, > ---------- > Von: Sebastian Bergmann[SMTP:s.bergmann_(at)_seven-sense.com] > > > An dieser Stelle muß ich einfach gestehen, daß ich noch nicht allzuviel > > Erfahrung mit (My)SQL habe und daß mir dieses count(*) Statement > unbekannt > > war. Also mysql_query() liefert mir dann direkt die richtige Anzahl? > > Gerade mal getestet: > > $result = mysql_query("select count(*) from counter where DATE like > '$today%'"); > > führt zu keinem vernünftigen Ergebnis in $result. Habe ich da was falsch > verstanden? > Ja ;-) Das was du (und zahlreiche PHP-Doku/-Bücher/-Beispiele) ungeschickterweise als $result bezeichnest, wird in perl geschickterweise als $sth wie statementhandle bezeichnet. Worum geht es: int mysql_connect(string [hostname] [:port] , string [username] , string [password] ); Returns: A positive MySQL link identifier on success, or false on error. z.B. $dbh = mysql_connect(...) liefert dann etwas, was bei perl als Database-Handler bezeichnet ist. Dies ist keine normale Zahl oder ein String, sondern eine art Zeiger auf etwas, unter dem man die Datenbank ansprechen kann. int mysql_query(string query, int [link_identifier] ); mysql_query() sends a query to the currently active database on the server that's associated with the specified link identifier. If link_identifier isn't specified, the last opened link is assumed. If no link is open, the function tries to establish a link as if mysql_connect() was called, and use it. This function returns TRUE or FALSE to indicate the success of UPDATE, INSERT, and DELETE queries. For SELECT queries it returns a new result identifier. The resources used by the query can then be freed by calling mysql_free_result(). array mysql_fetch_row(int result); Returns: An array that corresponds to the fetched row, or false if there are no more rows. mysql_fetch_row() fetches one row of data from the result associated with the specified result identifier. The row is returned as an array. Each result column is stored in an array offset, starting at offset 0. z.B. $sth = mysql_query('select....') liefert dann kein Ergebnis, sondern wiederum eine art Zeiger auf dieses Ergebnis. bei 'select count(*) from ....' kommt dann entweder false zurück, wenn die Tabelle nicht da ist oder keine Einträge hat, oder ein handle auf das ergebnis: $result; // Rückgabe des Selects if ($sth) { $result = mysql_fetch_row($sth); echo 'Die Tabelle hat ' . $result[0] . ' Eintraege'; } else { echo 'oh, entweder keine eintraege ' .'oder die Tabelle gibts nicht'; } Ich hoffe ich konnte es etwas verständlich machen, was diese "Handles" sind. Wenn du mehrere Verbindungen zu unterschiedlichen Daten- banken machst, bekommst du auch noch diese "Link-Identifier" die dann anzugeben sind, sonst wird immer der letzte verwendet. Viele Grüße, Mathias
php::bar PHP Wiki - Listenarchive