SQL Error : 1136 Column count doesn't match value count at..

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Lord-Blackwolf
Mitglied
Beiträge: 44
Registriert: 22.10.2005 10:58

Beitrag 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:
SpyHunter
Mitglied
Beiträge: 10
Registriert: 22.09.2006 07:48

Beitrag 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...
Lord-Blackwolf
Mitglied
Beiträge: 44
Registriert: 22.10.2005 10:58

Zählen bringt's ...*fg

Beitrag 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 ...
Greetz

Blackw 8) lf
SpyHunter
Mitglied
Beiträge: 10
Registriert: 22.09.2006 07:48

Beitrag 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 :)
Lord-Blackwolf
Mitglied
Beiträge: 44
Registriert: 22.10.2005 10:58

Beitrag 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.
Greetz

Blackw 8) lf
SpyHunter
Mitglied
Beiträge: 10
Registriert: 22.09.2006 07:48

Beitrag 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?
Lord-Blackwolf
Mitglied
Beiträge: 44
Registriert: 22.10.2005 10:58

Is ...

Beitrag 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)
Greetz

Blackw 8) lf
SpyHunter
Mitglied
Beiträge: 10
Registriert: 22.09.2006 07:48

Beitrag 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 ;)
SpyHunter
Mitglied
Beiträge: 10
Registriert: 22.09.2006 07:48

Beitrag 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);
			}
Lord-Blackwolf
Mitglied
Beiträge: 44
Registriert: 22.10.2005 10:58

Dann ...

Beitrag von Lord-Blackwolf »

... hab' ich gerade noch was gelernt ...

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

Cons 4 the solution ... :wink:
Greetz

Blackw 8) lf
Antworten

Zurück zu „phpBB 2.0: Mod Support“