PHP Dateiupload und Autoincrement in SQL

M.E.

Lt. Commander
Registriert
Jan. 2007
Beiträge
1.923
Hallo zusammen,
Ich arbeite zur Zeit an einem Webprojekt in dem Nutzer auch Dateianhänge hochladen können. In der SQL Datenbank gibt es verscheidene Entitäten zu denen das möglich ist (z.B. Idee).

Ein Nutzer, der eine Idee hat füllt eine Eingabemaske aus mit Titel und Beschreibung und kann zusätzlich eine Datei hochladen.
Code:
<input type="file" name="filename">
Das Formular sendet mit post die Daten an das Script. Dieses erstellt einen neuen Eintrag in der SQL Datenbank und soll dann die Datei automatisch in einen Unterorder speichern und zwar nach folgendem Schema:
Code:
move_uploaded_file($_FILES['filename']['tmp_name'], "Idee/Primaerschluessel/".$_FILES['datei']['name']);
Soweit kein Problem bis auf den Primärschlüssel, dieser ist in SQL nämlich wiefolgt definiert:
Code:
`id` int(11) NOT NULL AUTO_INCREMENT
[...]
PRIMARY KEY (`id`)
Wie kann ich dafür sorgen, dass automatisch ein Ordner angelegt wird mit der passenden ID in den die Datei verschoben wird?

Eine SQL Abfrage direkt nach dem Einfügen, die nach der höchsten id sucht scheint mir zu unsicher, da Nutzer ja auch mal Einträge löschen können oder es gleichzeitige Uploads durch Nutzer gibt.

Gibt es da eine elegante Lösung für?

MfG
M.E.
 
Hallo, danke für den Tipp!
Leider klappt es aber noch nicht.

Code:
$primaryKey = mysql_query("SELECT LAST_INSERT_ID() FROM Idee", $dbconnection);
echo $primaryKey;
Liefert immer 12 zurück
und
http://de.php.net/manual/en/function.mysql-insert-id.php
Code:
int mysql_insert_id ()
die PHP Funktion liefert immer 0 zurück.

Folgende IDs sind aktuell in der Tabelle:
1
2
3
4
5
6
7
8
11
12
13
18
19
20
woran kann das liegen?
MfG
M.E.
 
Es genügt "SELECT LAST_INSERT_ID()" ohne FROM ...

Und hast du vorher überhaupt einen Eintrag in die db INSERTed?

Achja, und mysql_query() gibt eine Resource zurück, nicht den Wert direkt.
 
Zuletzt bearbeitet:
  1. mysql_query('INSERT .....')
  2. mysql_insert_id()

mysql_insert_id() welches die gleiche Logik wie auch "SELECT LAST_INSERT_ID()" hat, liefert den letzten Auto-Increment einer Insert-Operation der aktuell genutzten Datenbank-Verbindung, also des Insert-Befehls den du gerade in deinem Code auf der Mysql-Verbindung ausgeführt hast.
 
Zurück
Oben