Zum Inhalt springen

MySQL liefert seltsames Ergebnis

Erstellt am 30. Oktober 2006 · 2 Antworten · letzte Antwort am 30. Oktober 2006

Tags: PHP, Datenbank, Frage

mike_72 ·

Hallo,

ich bin gerade an einer Extension und habe folgenden Code

function main($content,$conf)   {
...

  $res = '';
  $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', '`tx_articles`', '`pid` = "'.$PageID.'" AND `uid_category` = "'.$uidCategory.'" AND `deleted` = 0 AND `hidden` = 0');

  # debug
  echo count($res);  // hier steht seltsamerweise immer eine 1,
  // wenn keine Datensätze gefunden werden; ansonsten die korrekte Anzahl

  $anz = count($res);
  if ($anz > 0) {
    echo $anz.' Daten gefunden';
  else {
    echo "Keine Daten gefunden";  // in die else-Schleife geht das Script nie rein
  }
...
}

Ein var_dump($res) gibt das aus:
resource(71) of type (mysql result)
wobei die (71) da variiert. Das scheint aber wohl an der internen pid zu liegen.
Bei Goggle finde ich irgendwie auch nichts dazu. Dass count($res) dann eine 1 ausgibt erklärt sich wohl mit dem Inhalt var_dump. Aber da werde ich nicht schlau draus. Auch ein var_dump($GLOBALS) hat nicht weitergeholfen.

Wenn ich hingegen den SQL-Query aus dem mysql.log kopiere und z.B. in phpMyAdmin ausführe dann klappt alles.
Hat jemand eine Idee?

steffenk ·

was willst Du denn mit $res? Das ist eine Ressource, also ein Zeiger.

Richtig weiter gehts z.B. mit

mysql_num_rows($res)

oder

$row=$GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)

etc.

mike_72 ·

Danke! Das war´s.
Wie bin ich da nur auf count gekommen. Wahrscheinlich, weil ich in Punkto DB ansonsten eine eigene Klasse benutze, die mir schon automatisch die Datensätze in einem array zurückgibt ;-) Und das ist hier natürlich anders.