Seite 2 von 3

Verfasst: 26.10.2005 15:00
von Lord-Blackwolf
Nochmal danke Markus ....

ich hab's - siehe oben - gefixt und .... falls es noch mehr gibt wie mich, die manchmal wie der Ochs vorm Berg stehen .... gleich ein HOWTO beigefügt.

Greetz

Blackwolf

(den Ursprungscode hab ich - um nicht zu spammen - gleich wieder etwas reduziert ....) :grin:

Verfasst: 22.09.2006 07:54
von SpyHunter
hi, hab das gleiche problem :(
SQL Error : 1136 Spaltenzahl stimmt nicht mit der Anzahl der Werte überein in Reihe1

INSERT INTO artyshock_user (user_id, user_name, user_password, user_email, user_icq, user_beruf, user_ort, user_hp, user_geschlecht, user_cam, user_geburtsdatum, user_bildmodi, user_rechte) VALUES(3, 'Test', 'e10adc3949ba59abbe56e057f20f883e', 'test@test.com', '147258369', 'keiner', 'Graz', 'http://www.xy-z.at', '', 'Sony', '31.03.1987', 0, 1, 1, '')

Line : 653
File : usercp_register.php
das betroffene $sql:

Code: Alles auswählen

			$sql = "INSERT INTO artyshock_user (user_id, user_name, user_password, user_email, user_icq, user_beruf, user_ort, user_hp, user_geschlecht, user_cam, user_geburtsdatum, user_bildmodi, user_rechte)
				VALUES($user_id, '" . str_replace("\'", "''", $username) . "', '" . str_replace("\'", "''", $new_password) . "', '" . str_replace("\'", "''", $email) . "', '" . str_replace("\'", "''", $icq) . "', '" . str_replace("\'", "''", $occupation) . "', '" . str_replace("\'", "''", $location) . "', '" . str_replace("\'", "''", $website) . "', '" . str_replace("\'", "''", $geschlecht) . "', '" . str_replace("\'", "''", $kamera) . "', '" . str_replace("\'", "''", $geburtsdatum) . "', $bm, $user_rechte, ";
line 653:

Code: Alles auswählen

				message_die(GENERAL_ERROR, 'Could not insert data into users table', '', __LINE__, __FILE__, $sql);
ich find den fehler einfach nich :-/
kanns daran liegen das ich direkt über der geposteten $sql nochmal eine verwedne? (in der ersten soll ers in die phpBB Tabelle speichern und in der 2. (gepostet) in ne andere...

Zählen bringt's ...*fg

Verfasst: 22.09.2006 08:22
von Lord-Blackwolf
Hi Spyhunter ....

wenn ich richtig zähle, dann hat Deine Tabellenanweisung weniger Felder als die Anzahl der Daten, die Du einfügen willst.

Wenn ich das mal auflöse, sieht das für mich so aus:

INSERT INTO artyshock_user <Tabellenname> ---> VALUES <Werte>

(user_id, ---> 3,
user_name, ---> 'Test',
user_password, ---> 'e10adc3949ba59abbe56e057f20f883e',
user_email, ---> 'test@test.com',
user_icq, ---> '147258369',
user_beruf, ---> 'keiner',
user_ort, ---> 'Graz',
user_hp, ---> 'http://www.xy-z.at',
user_geschlecht, ---> '',
user_cam, ---> 'Sony',
user_geburtsdatum, ---> '31.03.1987',
user_bildmodi, ---> 0,
user_rechte) ---> 1,
---> 1,
---> ''
und ... wo sollen die beiden Werte hin?
:grin:

Also ....

Check mal, ob Du in irgendeiner Anweisung vergessen hast, zwei Tabellenfelder zu generieren,... wenn ja, bastel sie nach und alle Werte können auch brav in's Körbchen ... :grin:

In der Hoffnung geholfen zu haben ...

Verfasst: 22.09.2006 15:29
von SpyHunter
die letzten 2 werte (die nicht zugewiesen sind) kommen automatisch.. hab allerdigns kA warum, steig beim code von phpBB nimma ganz durch so komplex wie das ist^^
werd aba ma schaun das ich die einfach zuweise und hoffen das es dann geht :)

Verfasst: 22.09.2006 17:07
von Lord-Blackwolf
Öööhm ....

... ich bin auch kein SQL- Guru, aber die Anweisung, die Du gepostet hast:

Code: Alles auswählen

$sql = "INSERT INTO artyshock_user (user_id, user_name, user_password, user_email, user_icq, user_beruf, user_ort, user_hp, user_geschlecht, user_cam, user_geburtsdatum, user_bildmodi, user_rechte)
            VALUES($user_id, '" . str_replace("\'", "''", $username) . "', '" . str_replace("\'", "''", $new_password) . "', '" . str_replace("\'", "''", $email) . "', '" . str_replace("\'", "''", $icq) . "', '" . str_replace("\'", "''", $occupation) . "', '" . str_replace("\'", "''", $location) . "', '" . str_replace("\'", "''", $website) . "', '" . str_replace("\'", "''", $geschlecht) . "', '" . str_replace("\'", "''", $kamera) . "', '" . str_replace("\'", "''", $geburtsdatum) . "', $bm, $user_rechte, ";
... hat keinerlei Fehler. Der erste Teil sagt aus, WORIN er was einfügen soll,... der zweite Teil sagt aus WAS er da einfügen soll (und dabei soll er den "\" durch zwei ' ersetzen.)

Wenn Du beide Anweisungen hinsichtlich der Feldanzahl vergleichst, dann müssen Felder und Werte stimmen.
die letzten 2 werte (die nicht zugewiesen sind) kommen automatisch.. hab allerdigns kA warum,
In SQL entstehen Werte nicht "automatisch" ... :grin:

Du musst doch wissen, was für Felder Du in dein Profil im Forum einbaust ... :o

Tip:

Kann es sein, das Du einen MOD eingebaut hast und dabei vergessen wurde, zwei Felder in der Tabelle zu generieren? ... such mal nach einer ALTER TABLE - Anweisung in der SQL - Rubrik des MODs.

Hilfreich wäre auch (ich schätze mal, das es sich um einen Profil-MOD handelt), das Du ermittelst, wieviele Felder Du im Profil befüllen kannst. Daraus liesse sich ableiten, was das für Felder sind, die durch die beiden Werte gefüllt werden.

Danach suchst Du dann in dem MOD (oder den MODs) nach der Anweisung, die diese beiden Felder generiert.

Denkbar wäre auch, das eine Anweisung zur Werteübergabe nicht beim basteln gelöscht wurde, sondern doppelt da steht.

Die von Dir im CODE übermittelte Anweisung ist aufjeden Fall stimmig und ... ist von "vor" dem Einbau des MODs, d.h. die SQL-Anweisung, die die Tabelle verändert, müsste in einer MOD-Veränderung sein, die danach erfolgte.

Verfasst: 22.09.2006 19:05
von SpyHunter
also ich hab das phpBB erst installiert ohne mods und allem, hab versuch mich einzulesen aba woher die 2 werte kommen weiß ich nicht.. konnte sie inzwischen aba so einabun das der error behoben ist :)

allerdings hab ich imemr noch ein problem :-/
ich hab 2x $sql untereinander geschrieben weil ich will das er in 2tabellen einträgt (kA wie ich das sonst machen soll / könnte)

Code: Alles auswählen

			$sql = "INSERT INTO " . USERS_TABLE . "	(user_id, username, user_regdate, user_password, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_sig_bbcode_uid, user_avatar, user_avatar_type, user_viewemail, user_aim, user_yim, user_msnm, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_viewonline, user_notify, user_notify_pm, user_popup_pm, user_timezone, user_dateformat, user_lang, user_style, user_level, user_allow_pm, user_active, user_actkey)
				VALUES ($user_id, '" . str_replace("\'", "''", $username) . "', " . time() . ", '" . str_replace("\'", "''", $new_password) . "', '" . str_replace("\'", "''", $email) . "', '" . str_replace("\'", "''", $icq) . "', '" . str_replace("\'", "''", $website) . "', '" . str_replace("\'", "''", $occupation) . "', '" . str_replace("\'", "''", $location) . "', '" . str_replace("\'", "''", $interests) . "', '" . str_replace("\'", "''", $signature) . "', '$signature_bbcode_uid', $avatar_sql, $viewemail, '" . str_replace("\'", "''", str_replace(' ', '+', $aim)) . "', '" . str_replace("\'", "''", $yim) . "', '" . str_replace("\'", "''", $msn) . "', $attachsig, $allowsmilies, $allowhtml, $allowbbcode, $allowviewonline, $notifyreply, $notifypm, $popup_pm, $user_timezone, '" . str_replace("\'", "''", $user_dateformat) . "', '" . str_replace("\'", "''", $user_lang) . "', $user_style, 0, 1, ";
			$sql = "INSERT INTO artyshock_user (user_id, user_name, user_password, user_email, user_icq, user_beruf, user_ort, user_hp, user_geschlecht, user_cam, user_geburtsdatum, user_bildmodi, user_rechte, user_string)
				VALUES($user_id, '" . str_replace("\'", "''", $username) . "', '" . str_replace("\'", "''", $new_password) . "', '" . str_replace("\'", "''", $email) . "', '" . str_replace("\'", "''", $icq) . "', '" . str_replace("\'", "''", $occupation) . "', '" . str_replace("\'", "''", $location) . "', '" . str_replace("\'", "''", $website) . "', '" . str_replace("\'", "''", $geschlecht) . "', '" . str_replace("\'", "''", $kamera) . "', '" . str_replace("\'", "''", $geburtsdatum) . "', $bm, ";
allerdings trägt er nun nur in die tabelle der unteren $sql ein :-/

hat wer nen tipp?

Is ...

Verfasst: 22.09.2006 19:25
von Lord-Blackwolf
... klar ... *g

Die Anweisung:

Code: Alles auswählen

$sql = "INSERT INTO " . USERS_TABLE . "   (user_id,
... ist 'ne Allroundanweisung. Soll heissen ... ".USERS_TABLE . " is 'ne Variable. Er versucht also, die Tabelle mit dem Namen, der in der Variablen hinterlegt ist zu öffnen und zu füllen. Offensichtlich wird die Variable aber nirgendwo definiert. Ergo,... hatta nix, wo er's reinschubbsen kann. (Wenn ich nicht weiss wie die Kiste heisst, weiss ich auch nich wo ich's reintuen soll ..., gelle?)

in der Anweisung:

Code: Alles auswählen

$sql = "INSERT INTO artyshock_user 
... heisst die Tabelle "artyshock_user" und da weiss er ganz genau, wo er's eintragen muss (wenn Anzahl der Felder und Werte gleich sind ... sonst hast Du wieder Deinen Eingangsfehler.)

Also genau bestimmen, wie die Tabelle heissen soll, in die er was "inserten" soll.

Ansonsten fällt mir auf, das in beiden Anweisungen die Anzahl der "("-Klammern und ")"-Klammern unterschiedlich sind,... soll heissen, das nach der "INSERT INTO " <Tabellenname> die Werte in einer Klammer übergeben werden ... ich sehe zwar die allererste "("-Klammer ... aber den Abschluss dazu nicht.

[EDIT]

Noch'n Nachtrag:

Check mal in Guckstu hier in der Cross-Reference wo die Variable "Users_Table" überall getoucht wird ... ggf. ist sie einmal nicht richtig definiert.

(oder 's liegt würglisch an den Klammern)

Verfasst: 22.09.2006 21:19
von SpyHunter
ok, danke.
ich werd morgen gleich ma alles durchchecken

glaub fast das es wirklich die klammern sein könnten.. denn wenn

Code: Alles auswählen

$sql = "INSERT INTO artyshock_user...
nicht dabei steht geht das andere. also definiert isses ;)

Verfasst: 24.09.2006 18:21
von SpyHunter
ok, also an den klammern liegts nicht, die werden noch dazugesetzt

Code: Alles auswählen

			if ( $board_config['require_activation'] == USER_ACTIVATION_SELF || $board_config['require_activation'] == USER_ACTIVATION_ADMIN || $coppa )
			{
				$user_actkey = gen_rand_string(true);
				$key_len = 54 - (strlen($server_url));
				$key_len = ( $key_len > 6 ) ? $key_len : 6;
				$user_actkey = substr($user_actkey, 0, $key_len);
				$sql .= "0, '" . str_replace("\'", "''", $user_actkey) . "')";
			}
			else
			{
				$sql .= "1, '')";
			}

			if ( !($result = $db->sql_query($sql, BEGIN_TRANSACTION)) )
			{
				message_die(GENERAL_ERROR, 'Could not insert data into users table', '', __LINE__, __FILE__, $sql);
			}

			$sql = "INSERT INTO " . GROUPS_TABLE . " (group_name, group_description, group_single_user, group_moderator)
				VALUES ('', 'Personal User', 1, 0)";
			if ( !($result = $db->sql_query($sql)) )
			{
				message_die(GENERAL_ERROR, 'Could not insert data into groups table', '', __LINE__, __FILE__, $sql);
			}

			$group_id = $db->sql_nextid();

			$sql = "INSERT INTO " . USER_GROUP_TABLE . " (user_id, group_id, user_pending)
				VALUES ($user_id, $group_id, 0)";
			if( !($result = $db->sql_query($sql, END_TRANSACTION)) )
			{
				message_die(GENERAL_ERROR, 'Could not insert data into user_group table', '', __LINE__, __FILE__, $sql);
			}

			if ( $coppa )
			{
				$message = $lang['COPPA'];
				$email_template = 'coppa_welcome_inactive';
			}
			else if ( $board_config['require_activation'] == USER_ACTIVATION_SELF )
			{
				$message = $lang['Account_inactive'];
				$email_template = 'user_welcome_inactive';
			}
			else if ( $board_config['require_activation'] == USER_ACTIVATION_ADMIN )
			{
				$message = $lang['Account_inactive_admin'];
				$email_template = 'admin_welcome_inactive';
			}
			else
			{
				$message = $lang['Account_added'];
				$email_template = 'user_welcome';
			}
USERS_TABLE ist mit $table_prefix definiert und das ist auch so definiert wies richtig ist.. also liegt der fehler auch nich daran :-/

falls noch wer ne andre idee hat was falsch sein könnte... bin über jede hilfe froh ;)

edit://
habs nun gelöst :)
für alle die es interessiert:
einfach das 2. $sql umbennen und das dazugehörige auch:

Code: Alles auswählen

			$sql = "INSERT INTO " . USERS_TABLE . "	(user_id, username, user_regdate, user_password, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_sig_bbcode_uid, user_avatar, user_avatar_type, user_viewemail, user_aim, user_yim, user_msnm, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_viewonline, user_notify, user_notify_pm, user_popup_pm, user_timezone, user_dateformat, user_lang, user_style, user_level, user_allow_pm, user_active, user_actkey)
				VALUES ($user_id, '" . str_replace("\'", "''", $username) . "', " . time() . ", '" . str_replace("\'", "''", $new_password) . "', '" . str_replace("\'", "''", $email) . "', '" . str_replace("\'", "''", $icq) . "', '" . str_replace("\'", "''", $website) . "', '" . str_replace("\'", "''", $occupation) . "', '" . str_replace("\'", "''", $location) . "', '" . str_replace("\'", "''", $interests) . "', '" . str_replace("\'", "''", $signature) . "', '$signature_bbcode_uid', $avatar_sql, $viewemail, '" . str_replace("\'", "''", str_replace(' ', '+', $aim)) . "', '" . str_replace("\'", "''", $yim) . "', '" . str_replace("\'", "''", $msn) . "', $attachsig, $allowsmilies, $allowhtml, $allowbbcode, $allowviewonline, $notifyreply, $notifypm, $popup_pm, $user_timezone, '" . str_replace("\'", "''", $user_dateformat) . "', '" . str_replace("\'", "''", $user_lang) . "', $user_style, 0, 1, ";
			if ( $board_config['require_activation'] == USER_ACTIVATION_SELF || $board_config['require_activation'] == USER_ACTIVATION_ADMIN || $coppa )
			{
				$user_actkey = gen_rand_string(true);
				$key_len = 54 - (strlen($server_url));
				$key_len = ( $key_len > 6 ) ? $key_len : 6;
				$user_actkey = substr($user_actkey, 0, $key_len);
				$sql .= "0, '" . str_replace("\'", "''", $user_actkey) . "')";
			}
			else
			{
				$sql .= "1, '')";
			}

			if ( !($result = $db->sql_query($sql, BEGIN_TRANSACTION)) )
			{
				message_die(GENERAL_ERROR, 'Could not insert data into users table', '', __LINE__, __FILE__, $sql);
			}

			$sqlats = "INSERT INTO artyshock_user (user_id, user_name, user_password, user_email, user_icq, user_beruf, user_ort, user_hp, user_geschlecht, user_cam, user_geburtsdatum, user_bildmodi, user_rechte)
				VALUES($user_id, '" . str_replace("\'", "''", $username) . "', '" . str_replace("\'", "''", $new_password) . "', '" . str_replace("\'", "''", $email) . "', '" . str_replace("\'", "''", $icq) . "', '" . str_replace("\'", "''", $occupation) . "', '" . str_replace("\'", "''", $location) . "', '" . str_replace("\'", "''", $website) . "', '" . str_replace("\'", "''", $geschlecht) . "', '" . str_replace("\'", "''", $kamera) . "', '" . str_replace("\'", "''", $geburtsdatum) . "', $bm, $user_rechte)";

			if ( !($result = $db->sql_query($sqlats, BEGIN_TRANSACTION)) )
			{
				message_die(GENERAL_ERROR, 'Could not insert data into users table', '', __LINE__, __FILE__, $sqlats);
			}

Dann ...

Verfasst: 24.09.2006 21:59
von Lord-Blackwolf
... hab' ich gerade noch was gelernt ...

das "$sqlats =" kannte ich auch noch nicht ... :grin:

Cons 4 the solution ... :wink: