index erstellen - Primärschlüssel
Vitali
- php
Tach,
ich habe ein kleines Problem.
Ich habe ein Spale index als Primärschlüssel und weil der Inhalt nich zweimal vorkommen kann brauche ich einen kleine Schript der immer aufzählt 1 2 3 4 5 6 7 usw.
ich würde das so machen den letzten datensatz öffnen und den index auslesen und 1 dazu addiere. Aber ich habe kein Befehlt gefunden wie man der Zeigen auf den letzten datensatz setzt :-( bei ASP ist das leichter.
Wie macht Ihr das???
Gruß Vitali
hallo,
die Lösung für das ist relativ einfach.
$sql="SELECT * FROM tabelle";
$result=mysql_query($sql,$verbindung);
while ($row = mysql_fetch_object($result))
{
$spalten_name = $row -> spalten_name
}
anschließend hast du den wert in der Variable $spalten_name
Hi!
$sql="SELECT * FROM tabelle";
$result=mysql_query($sql,$verbindung);
while ($row = mysql_fetch_object($result))
{
$spalten_name = $row -> spalten_name
}anschließend hast du den wert in der Variable $spalten_name
Das ist nicht so gut, wenn Du mal ein paar mehr Datensätze hast lannst Du das vergessen.
Frage doch einfach genau den Datemsatz ab den Du haben willst, indem Du Absteigend sortierst(ORDER BY spalte DESC) und anschließend das Ergebnis auf 1 limitierst(LIMIT 0,1)
Aber in manchen RDMBS gibt es auch autoincrement, damit wird bei einem neuen Insert automatisch die neue ID vergeben.
Grüße
Andreas
Danke das ist ein guter trick mit absteigen sortieren man ;-) ich setze aber lieber auf Auto wert
Danke
Moin!
Danke das ist ein guter trick mit absteigen sortieren man ;-) ich setze aber lieber auf Auto wert
Das ist ein ganz beschissener Trick, weil es keine Eindeutigkeit garantiert. Was ist, wenn zwei Prozesse gleichzeitig die derzeit höchste ID haben wollen?
Der eine Prozess fragt zuerst ab, braucht aber eine gewisse Zeit, bis er den nächsten Datensatz schreibt. In der Zwischenzeit fragt der zweite Prozess und kriegt dieselbe maximale ID...
- Sven Rautenberg
Hi!
Das ist ein ganz beschissener Trick, weil es keine Eindeutigkeit garantiert. Was ist, wenn zwei Prozesse gleichzeitig die derzeit höchste ID haben wollen?
Ja, kommt drauf an wofür man die ID will. Sonst gibt es ja noch LOCK... ;-)
Wenn ich weiß das die Anwendung nur mit MySQL laufen soll würde ich auto-increment nehmen, sonst gibt es in PEAR eine Methode die nächste ID zu ermitteln, ich weiß zwar nicht wie das intern funktioniert, ich vermute mit einem Full-Table Lock was auch nicht unbedingt das Gelbe vom Ei ist, aber das ist wohl der Preis der Portabilität.
Bessere Möglichkeit wäre evtl. ein Insert und dann mit last_insert_id ein Update machen.
Viele Grüße
Andreas
Hallo Vitali,
ich würde das so machen den letzten datensatz öffnen und den index auslesen und 1 dazu addiere.
welche Datenbank? ich tippe jetzt mal auf mysql (in anderen geht es vmtl. ähnlich?) - da musst du die Spalte der automatisch hochzählen soll ein auto_increment verpassen ->http://www.mysql.de/doc/de/CREATE_TABLE.html (etwas nach unten scrollen).
Grüße aus Nürnberg
Tobias