[TYPO3-german] mysql_query() und mysql_unbuffered_query() weirdness

Jens Mittag jens.mittag at prime23.de
Sun Nov 26 16:31:22 CET 2006


Hi!

Ich habe einen Hook für "processDatamap_afterDatabaseOperations"
geschrieben und habe nun ein Problem. Beim Ausführen des Hooks möchte
ich weitere Datensätze automatisch hinzufügen, um dem Benutzer Arbeit
abzunehmen. Jedoch werden diese Datensätze nicht in der DB erzeugt. Erst
wenn ich in der t3lib_db die Methode exec_INSERTquery() so abändere,
dass statt mysql_query() mysql_unbuffered_query() benutzt wird, klappt
es.

Um das besser zu illustrieren, hier eine detaillierte Beschreibung:

  	- Tabellen:	album
			album_images_mm
			images

	- Hook: Der Hook behandelt nur neue und upgedatete Einträge der 
		Tabelle "album". In solch einem Fall wird das angegebene
		Verzeichnis des Albums nach Bildern gescannt, und ein 
		Eintrag in die Tabelle "images" geschrieben. Wenn ich 
		jetzt jedoch einen Eintrag in "album_images_mm" 
		schreibe, dann wird dieser nicht erzeugt.

	- Quellcode-Auszug:

$fields_values = array();
$fields_values['pid'] = $album["pid"];
$fields_values['caption'] = $file;
$fields_values['filename'] = $file;
$fields_values['tstamp'] = time();
$fields_values['crdate'] = time();

// create the image record
$GLOBALS['TYPO3_DB']->exec_INSERTquery("tx_jmgallery_images",
$fields_values);

// attach this image to the album
$fields = array();
$fields["uid_local"] = $album["uid"];
$fields["uid_foreign"] = $GLOBALS['TYPO3_DB']->sql_insert_id();
$fields["sorting"] = $count++;

$GLOBALS['TYPO3_DB']->exec_INSERTquery("tx_jmgallery_albums_images_mm",
$fields);


Das Hinzufügen einiger Debug-Ausgaben in exec_INSERTquery() hat ergeben,
dass mysql_query() keine Fehler erzeugt (sql_error() bleibt leer) und
dass affected_rows() den Wert 1 hat. Sehr sehr komisch. 
Erst das Abändern von mysql_query() durch mysql_unbuffered_query() löst
das Problem. 

Hat wer von euch genug Ahnung, um sagen zu können ob das nun nen Bug
oder nen Feature ist? Wird die Tabelle "album_images_mm" vll. gesperrt
durch Typo3? Und warum werden für INSERTS sowieso keine
unbuffered_queries benutzt?

Zur Info: Auf meinem System (FC6) läuft PHP 5.1.6 und MySQL 5.0.22-2.1.
Ich habe das aber auch schon auf einem Debian stable Server getestet,
mit gleichem Ergebnis.

Gruß Jens




More information about the TYPO3-german mailing list