---
title: "Last Update: MySQL Fehler wenn kein Content vorhanden"
url: "https://www.typo3.net/d/20807-last-update-mysql-fehler-wenn-kein-content-vorhanden"
source: "typo3.net"
tags: ["Extensions","Datenbank","Frage","PHP"]
created: "2005-02-03"
last_reply: "2005-02-14"
replies: 4
solved: false
page: 1
pages: 1
lang: "de"
---

# Last Update: MySQL Fehler wenn kein Content vorhanden

Extensions · 4 Antworten · gestartet 2005-02-03

## Eröffnungsbeitrag

**Wu-mc** · 2005-02-03 · [Beitrag #1](https://www.typo3.net/d/20807-last-update-mysql-fehler-wenn-kein-content-vorhanden/1)

Ich habe bereits in [diesem Thread](https://www.typo3.net/d/20658-last-update-fuer-unterseiten) gefragt, was aber wohl das falsche Forum war.

Es geht um folgendes, die Extension Last Update zeigt ja ganz zuverlässig das Datum des letzten Updates an, wenn ein Inhalt vorhanden ist. Ist allerdings auf einer Seite mal kein Content Element das abgefragt werden kann bekomm ich kurzzeitig eine unschöne MySQL Fehlermeldung. Leider zu kurz um sie lesen zu können. Des Weiteren kommt es vor das sich mein ganzes Layout verschiebt. Als Datum wird dann der 1.1.1970 angezeigt. Was mich aber nicht weiter stören würde, sondern nur das mit der Fehlermeldung und das mit dem Layout.

Ich konnte den Fehler schon eingrenzen und wüsste auch ne Möglichkeit ihn zu beheben, leider kann ich kein PHP. In der PHP Klasse pi1/class.tx_lastupdate_pi1.php gibt es die Methode query_syslog() die das Datum abfägt. Wenn man hier jetzt eine IF setzen könnte, so auf die Art Frage DB nur ab wenn für die aktuelle Seite Inhalt vorhanden ist. Oder sonst irgendwas um die Fehlermeldung zu verhindern. In Java wäre das ganze eh im Try and Catch Block, dann müsste man den Catchblock einfach leer lassen bzw. die Meldung abfangen und einfach nicht ausgeben.

Ich bin für Anregungen wirklich sehr dankbar.

## Antworten

### [#2](https://www.typo3.net/d/20807-last-update-mysql-fehler-wenn-kein-content-vorhanden/2) · Wu-mc · 2005-02-04

weiß denn niemand einen Rat?

### [#3](https://www.typo3.net/d/20807-last-update-mysql-fehler-wenn-kein-content-vorhanden/3) · Wu-mc · 2005-02-06

Konnte das ganze nun etwas eingrenzen. Außerdem hab ich die Fehlermeldung mal herausfinden können.

Hier die Meldung: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in class.t3lib_db.php on line 723

In dieser PHP Datei an der angebenen Stelle befindet sich folgendes:

```php
/**
 * Returns an associative array that corresponds to the fetched row, or FALSE if there are no more rows.
 * mysql_fetch_assoc() wrapper function
 * Usage count/core: 307
 *
 * @param        pointer             MySQL result pointer (of SELECT query) / DBAL object
 * @return         array                Associative array of result row.
 */

function sql_fetch_assoc($res) {
     return mysql_fetch_assoc($res);
}
```

Diese Funktion wird von dem PHP Skript von LastUpdate in Zeile 103 aufgerufen. Darunter in Zeile 113 zwar auch, aber nach meiner Konfiguration wird dieser Aufruf durch die IF Verzweigung niemals erreicht.

```php
		/**
 * Filter records with 'enableFields'
 *
 * @return	array		Array containing timestamp and backend userid.
 */
		function check_hiddenRecords() {
			$db_tables = $GLOBALS['TYPO3_DB']->admin_get_tables();
			$arr = $this->query_syslog();

			foreach ($arr as $val) {
				$result = t3lib_div::trimExplode(':', $val, 1);

				if (t3lib_div::inArray($db_tables, $result[0]) && $this->config['pid'] == 'current'|| t3lib_div::inArray($db_tables, $result[0]) && $this->config['pid'] == '2') {


					$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', $result[0], 'uid ='.$result[2].' AND pid = '.$GLOBALS['TSFE']->id.$this->cObj->enableFields($result[0]), '', '', ''); // this page only
					$row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
					if (is_array($row)) {
						$outArr = $row['tstamp'].':'.$result[1];
						break;
					}
				}


				if (t3lib_div::inArray($db_tables, $result[0]) && $this->config['pid'] == 'site' || t3lib_div::inArray($db_tables, $result[0]) && $this->config['pid'] == '1') {
					$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', $result[0], 'uid ='.$result[2].' AND pid ='.$result[4].$this->cObj->enableFields($result[0]), '', '', ''); // whole site
					$row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);

					if (is_array($row)) {
						$outArr = $row['tstamp'].':'.$result[1];
						break;
					}
				}
			}


			return $outArr;

		}
```

Soweit ich das Überblicke ist es eine Funktion zum Auswerten eines MySQL Datenstroms. Da zuvor die DB abgefragt wird und das Ergebnis an diese Funktion übergeben wird.

Jetzt müsste es doch möglich sein das was an diese Funktion übergeben wird zuerst irgendwie zu prüfen, ob es sich um ein valides Ergebnis handelt und falls nicht mit einem Standardwert fortzufahren.

### [#4](https://www.typo3.net/d/20807-last-update-mysql-fehler-wenn-kein-content-vorhanden/4) · Wu-mc · 2005-02-09

es gibt wieder Neuigkeiten. Ich habe das Problem einem Freund geschildert, der meinte wenn ich ein @ vor den Funktionsaufruf mache dann verschwindet schonmal die Fehlermeldung, also folgenden Code

```php
function sql_fetch_assoc($res) {
     return mysql_fetch_assoc($res);
}
```

in

```php
function sql_fetch_assoc($res) {
     return @mysql_fetch_assoc($res);
}
```

ändern. Das hab ich auch gemacht und es funktioniert. Ich weiß nur noch nicht ob das so positiv ist, falls mal ne Fehlermeldung ausgegeben werden soll die benötigt wird. Kann mir jemand sagen was die Funktion genau macht? Es gibt ein Feld zurück was sich auf die übergebene Reihe bezieht.

Mit diesem Feld wird dann weitergearbeitet und wenn es eine Feld ist dann wird 'tstamp' rausgefiltert mit

```php
f (is_array($row)) {
$outArr = $row['tstamp'].':'.$result[1];
break;
}
```

Jetzt könnte man da doch bestimmt noch ein Else mit einem Standardwert oder soetwas reinmachen, nur wie geht das genau und welches format hat "tstamp" weil wenn man den Wert über phpMyAdmin ausliest ist der Wert recht verwirrend.

### [#5](https://www.typo3.net/d/20807-last-update-mysql-fehler-wenn-kein-content-vorhanden/5) · Wu-mc · 2005-02-14

Okay, habe das Problem jetzt gelöst!

Also wie man die Fehlermeldung wegbekommt steht ja oben. Nun noch ein Trick wie man sein eigenes Defaultdatum laden kann. Einfach in die Funktion check_hiddenRecords() kurz vor dem Return noch eine IF einfügen und zwar wie folgt:

```php
if (empty($outArr)) {
$outArr = 'xxx:'.$result[1];
}
```

das xxx muss natürlich durch einen gültigen Wert ersetzt werden. Gerechnet wird hier in Sekunden seit dem 1.1.1970
also z.B. für den 1.1.2005 muss man dann 35 Jahre x 365 (?) Tage x 24 Stunden pro Tag x 60 Minuten pro Stunde x 60 Sekunden pro Minute. Den Wert den man dann erhält einfach für die xxx einsetzen (vorsicht, der Doppelpunkt muss bleiben) und schon hat man sein eigenes Default Datum.

---

Quelle: „Last Update: MySQL Fehler wenn kein Content vorhanden“, typo3.net, https://www.typo3.net/d/20807-last-update-mysql-fehler-wenn-kein-content-vorhanden
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
