WBB-Fehler
Willi
- php
Hallo,
Ich habe zurzeit eine, relativ dringende Frage wegen WBB:
Ich habe ein Script geschrieben, mit dem ich viele User gleichzeitig erstellen kann, um nicht die etwa 850 Benutzer per ACP zu erstellen.
Das klappt auch alles ganz gut, nur beim einfüllen von "userfields" funktioniert das Script nicht mehr, hier mal der wichtige Teil des Scripts:
<?php
$group = $db->query_first("SELECT * FROM bb".$n."_groups WHERE title = 'Klasse ".$klasse."'");
$groupid = $group['groupid'];
$rankid = $db->query_first("SELECT rankid FROM bb".$n."_ranks WHERE groupid IN ('0','$groupid') AND needposts='0' AND gender IN ('0','0') ORDER BY gender DESC",1);
$account = $db->query("INSERT INTO bb".$n."_users (username,password,email,birthday,groupid,rankid,regdate,lastvisit,lastactivity,activation,daysprune,timezoneoffset,dateformat,timeformat,emailnotify,receivepm,emailonpm,pmpopup,umaxposts,showsignatures,showavatars,showimages,nosessionhash,guthaben,rules_read) VALUES ('".$username."','".md5($password)."','','".$birthday."','$groupid','$rankid[rankid]','".time()."','".time()."','".time()."','1','0','1','d.m.Y','H:i','0','1','0','1','0','1','1','1','1','$guthaben','0')");
$id = $db->query_first("SELECT userid FROM bb".$n."_users WHERE username = '".$username."'"); /* <-- funktioniert problemlos */
$userid = $id['userid'];
$name = $db->query("INSERT INTO bb".$n."_userfields(userid,field3,field4) VALUES ('".$userid."','".$klasse."','".$name."')");
?>
Der Fehler befindet sich wahrscheinlich beim Auslesen der ID ($id = $db->query....), der Rest funktioniert. Die Fehlermeldung ist folgende:
Database error in WoltLab Burning Board: Invalid SQL: INSERT INTO bb1_userfields(userid,field3,field4) VALUES ('','12','Michael Muster')
mysql error: Duplicate entry '0' for key 1
Kann mir jemand sagen woran das liegt?
Grüße,
Willi
Shit, sry, hab nen Fehler im Post...
Das Kommentar im PHP-Code gehört natürlich eine Zeile höher, sonst machts ja auch mit dem Text untendrunter keinen Sinn.
Und bevor eine Frage aufkommt: Ich verwende Woltlab Burning Board Lite 1.0.2
Grüße,
Willi
hi,
Ich habe zurzeit eine, relativ dringende Frage wegen WBB:
Wenn's dringend ist, dann hast du ja sicher schon selber Debugging betrieben. (Kontrollausgaben gemacht, etc.)
Database error in WoltLab Burning Board: Invalid SQL: INSERT INTO bb1_userfields(userid,field3,field4) VALUES ('','12','Michael Muster')
mysql error: Duplicate entry '0' for key 1Kann mir jemand sagen woran das liegt?
Daran, das beim ersten Value nichts steht.
Warum nicht? Ja, da warten wir jetzt auf die Ergebnisse deines Debuggings.
gruß,
wahsaga
Hallo,
hi,
Ich habe zurzeit eine, relativ dringende Frage wegen WBB:
Wenn's dringend ist, dann hast du ja sicher schon selber Debugging betrieben. (Kontrollausgaben gemacht, etc.)
Ja, stimmt. Kam aber nichts raus.
Database error in WoltLab Burning Board: Invalid SQL: INSERT INTO bb1_userfields(userid,field3,field4) VALUES ('','12','Michael Muster')
mysql error: Duplicate entry '0' for key 1Kann mir jemand sagen woran das liegt?
Daran, das beim ersten Value nichts steht.
Ja, klar. Nur warum?
Warum nicht? Ja, da warten wir jetzt auf die Ergebnisse deines Debuggings.
Ok: Er findet die Daten einfach net. Also egal wie/ob ich $userid oder $id mit echo ausgebe, oder $id mit print_f überprüfe... Er "findet" einfach irgendwie 'userid' des gerade eingefügten Accounts nicht. Vielleicht ist der Fehler in der Abfrage: WHERE username = '".$username."'. Könnt ihr da einen Fehler entdecken?
// dieser Post war etwa 20min in meinem Firefox und wurde nicht abgeschickt.
Aber: MITTLERWEILE FUNZT DAS SCRIPT! Zwar werden Geburtstag und Wohnort nicht in die DB eingetragen, aber den Grund dafür finde ich jetzt auch noch
Grüße,
Willi
hi,
Ok: Er findet die Daten einfach net. Also egal wie/ob ich $userid oder $id mit echo ausgebe, oder $id mit print_f überprüfe... Er "findet" einfach irgendwie 'userid' des gerade eingefügten Accounts nicht. Vielleicht ist der Fehler in der Abfrage: WHERE username = '".$username."'. Könnt ihr da einen Fehler entdecken?
Ohne Debugausgaben, und ggf. Test des erzeugten Query-Strings über ein alternatives Interface wie bspw. phpMyAdmin - nein.
Aber wieso nutzt du eigentlich nicht LAST_INSERT_ID() (bzw. deren Äuqivalent in den MySQL-Funktionen von PHP, wie auch immer dein Datenbankobjekt das einbinden mag), um die zuletzt erzeugte ID zu erhalten?
gruß,
wahsaga
echo $begrüßung;
Wenn's dringend ist, dann hast du ja sicher schon selber Debugging betrieben. (Kontrollausgaben gemacht, etc.)
Ja, stimmt. Kam aber nichts raus.
Es kommt immer was raus, wenn man Kontrollausgaben mit var_dump() statt echo/print() vornimmt. Während ein echo nichts ausgibt kann man bei vardump() beispielsweise
NULL
bool(false)
string(0) ""
erhalten.
echo "$verabschiedung $name";
echo $begrüßung;
Database error in WoltLab Burning Board: Invalid SQL: INSERT INTO bb1_userfields(userid,field3,field4) VALUES ('','12','Michael Muster')
mysql error: Duplicate entry '0' for key 1Kann mir jemand sagen woran das liegt?
Dir ist, so scheint's, die userid verlorengegangen. Setz doch mal das error_reporting auf E_ALL und prüfe, ob du eventuell auf nicht existierende Variablen zugreifst.
echo "$verabschiedung $name";