[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