Tach!
Ich nehme das einfach mit SELECT MAX(itemID) und füge stumpf danach +1 hinzu. Schon haben wir die jetzt zu verwendende ID für den nächsten Datensatz.
Warum willst du das auf diese unsichere Art machen? Warum fügst du nicht einfach den Datensatz ein und liest dann die dafür vergebene ID über mysql(i)_insert_id() aus?
Was ist jetzt sinnvoll? Soll ich ganz am Anfang, wenn ein neuer Datensatz eingefügt werden soll einfach schonmal in jeder der Tabellen einen leeren Datensatz einfügen, damit überall schonmal itemID X eingetragen ist und ich dann nur noch mit Update drüber fahren muss, um die einzelnen Werte einzutragen oder wie soll ich das machen?
Warum hast du getrennte Tabellen, wenn anscheinend zu jedem Datensatz exakt ein einzelner Datensatz in anderen Tabellen vorhanden ist? Und warum soll der leer vorbereitet werden? Beim Abfragen bringt das keine Vorteile. Zum einen sind Joins erforderlich, zum anderen sieht man nicht vorhandene Werte auch beim (Left) Join. Wenn du Daten nicht auf einmal sondern stückweise in die Felder schreiben willst, dann kannst du INSERT ... ON DUPLICATE KEY UPDATE ... verwenden, ohne immer zusätzlich auf die Existenz zu prüfen.
Klar funktioniert der Code so wie er da steht nicht ganz - das merke ich auch gerade. Mein Problem ist nur, dass ich a) nicht weiß ob alle Daten des Datensatzes angegeben sind und b) wenn nein welche denn nun angegeben sind. Deswegen muss ich immer mit if überprüfen, welche Daten angegeben sind, um sie in die Datenbank zu schreiben. Wenn dieser Datensatz dann vorhanden ist, soll er natürlich auch in die Datenbank geschrieben werden. Also:
Kommen die Daten denn kleckerweise oder stehen sie alle auf einmal zur Verfügung? Wenn du mal diese und mal jene Felder übergeben bekommst, dann iterier doch über all die aktuell vorhandenen Informationen, vergleiche mit eine Liste an erlaubten Feldnamen und füge sie in eines temporäres Array ein. Aus diesem baust du dann das Statement zusammen (mit implode() über die Keys für die Feldnamen und über die Werte für den VALUES-Teil).
dedlfix.