Mailinglisten-Archive |
On Mon, 14 Aug 2000, Robert Hoffmann wrote: > > > > eigentlich schon, aber wie gesagt: Sie IST erfolgreich. Wie > > > > man vielleicht erkennen kann, wird hiermit ein User-Account > > > > angelegt, und dieser Account ist nachher auch vorhanden, nur > > > > weiss ich halt nicht seine ID ! > > > > > > Einfach mal reingefragt : Warum möchtest du die ID wissen? Wenns nur für > > > interne DB-Zwecke ist, kannst du das Ganze Problem auch umgehen... > > > > Nein, ich kann es nicht wirklich umgehen, abgesehen davon, > > dass ich das auch nicht ganz einsehen wuerde... Ich brauche diese > > Funktion an vielen Stellen in meinem Script, und wenn ich auf sie > > verzichten wollte, koennte ich direkt auf AUTO_INCREMENT > > verzichten, das waer auch nicht Sinn der Sache! Die ID von einer > > Tabelle muss ich uebrigens in einer anderen Tabelle eintragen > > (als Referenz darauf), und so kann ich auf diese Funktion nicht > > verzichten. > > Aeh, aber da ich mich jetzt an jeden Strohhalm klammere > > trotzdem die Frage: Was meinst Du mit Umgehen? Ich sehe jetzt nur > > eine Moeglichkeit: Ich frage die Datenbank selber nach den IDs, > > nehme die hoechste Zahl und addiere eins, und schon "glaube ich > > zu wissen", was MySQL als naechste ID verwenden wird... bei Multi > > User Systemen ist das aber schon hart an der Grenze, oder an was > > dachtest Du? > > Nun ja, ich hatte auch mal das Problem mit dem Autoincrement (jedoch unter > Sybase, das spielt aber hier keine Rolle). > Du könntest hingehen und deine IDs selbst verwalten. Dazu schaltest du > autoincrement aus und dann: > > Du erstellst eine Zusatztabelle die nichts mit den restlichen zu tun hat. > Nennen wir sie mal "internaldata". In dieser Tabelle > erstellst du ein Feld "internal_lastid" oder so ähnlich [...] > Den inhalt setzt du in eine Variable ($id). Dann machst du ein $id++; und > schon hast du deine Id [...] > diese Id schreibst du anschliessend zurück in > die Tabelle internaldata. Ausserdem kannst du diese Id in alle Tabellen > reinschreiben die sich aufeinander beziehen... Seit Stunden suche ich in dieser Liste und im IRC nach einer Loesung, doch Deine Mail ist der erste theoretisch umsetzbare Ansatz, auch wenn er mir nicht gefaellt... aber ich kann nicht genug betonen: Es ist eine funktionierende Loesung, und dafuer erstmal riesigen DANK! Und dass er mir nicht gefaellt wirst Du wohl verstehen im Angesicht von 800 MB Datenbank, ueber 10000 Zeilen Code und 70 mysql_query("Insert ...") - Anweisungen. Im Moment, da mir wenigstens zwei Leute bestaetigt haben, dass es mit mysql_insert_id() (und PHP4) mit mehreren Connections Probleme gibt, denke ich in Richtung Vermeidung der zweiten Verbindung um jeden Preis. > Mit autoincrement hatte ich schon mal Probleme dass ich Tests mit Tabelle1 > machte und dann für diese Tabelle der Autoincrement-Wert bei x stand und für > Tabelle2 auf x-y somit war die Sch...am dampfen... (fast?) jede Tabelle ist bei mir mit einer ID versehen, die AUTO_INCREMENT ist, aber ich gehe ja auch nicht davon aus, dass die IDs untereinander eindeutig sind, warum sollten sie auch, sie werden auch nur fuer jeweils eine Tabelle gebraucht. Interessant an Deinem Ansatz ist tatsaechlich, dass es ja nicht schadet, dass alle Tabellen ueberschneidungsfreie IDs haben. > Mit der obigen Lösung hast du übrigens eine Tabelle in der du alle internen > Daten schon verwalten kannst, quasi eine ini-datei in der DB. :-) So eine Tabelle hab ich schon, auch wenn ich DIE nicht fuer Deine Loesung verwenden kann... Diese Sendung wurde Ihnen praesentiert von Jim PGP encrypted mails welcome! Key on any keyserver or ftp://users.de --- And you wouldn't want to use capabilities over NFS anyway, since NFS stands for No File Security. ( Theodore Y Ts'o )
php::bar PHP Wiki - Listenarchive