phpbar.de logo

Mailinglisten-Archive

[php] AW: [php] phpOpenCounter

[php] AW: [php] phpOpenCounter

Gloss Mathias Mathias.Gloss_(at)_start.de
Tue, 4 Jan 2000 10:49:20 +0100


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