PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fehler SQL-Befehl



tino23j
21.02.2007, 10:32
Fehler
SQL-Befehl:

INSERT INTO `vms_interface`
VALUES (

'forced-sponsor', 0, 0, 'passwort', 0, 0.000000, 0, 0.0000, 0, 0.0000, 0.0000, 0.000000, 0, 0, 0.000000, 0, 0, 0

MySQL meldet:

#1136 - Column count doesn't match value count at row 1

wer kann mir helfen

SebbyPHM
21.02.2007, 10:49
da gehst du einfach oben auf "einfügen" und gibst bei "name" oder wie das heißt "forced-sponsor" ein - fertig

tino23j
21.02.2007, 11:00
hie???

Jenny
21.02.2007, 12:33
Nun, bei phpmyadmin - interface - den Datensatz per Hand eingeben orientieren kannst Dich dabei an den anderen Interfaces die Du schon da drin hast

tino23j
21.02.2007, 13:02
geht auch nicht

dragon11
21.02.2007, 13:44
geht nicht - gibts nicht :P

in deie Datenbank gehen,
Tabelle vms_interface aufrufen
auf anzeigen klicken
auf einfügen klicken
im Feld sponsor forced-sponsor eingeben und auf ok klicken

damit ist der Datensatzt dann da undman kann in im Admin weiter bearbeiten

Gyros
21.02.2007, 15:56
ah is ja doch hier ^^

@tino , siehe antwort im klamm forum

darkrulez
08.03.2007, 01:51
Original von tino23j
Fehler
SQL-Befehl:

INSERT INTO `vms_interface`
VALUES (

'forced-sponsor', 0, 0, 'passwort', 0, 0.000000, 0, 0.0000, 0, 0.0000, 0.0000, 0.000000, 0, 0, 0.000000, 0, 0, 0

MySQL meldet:

#1136 - Column count doesn't match value count at row 1

wer kann mir helfen

auch wenn der letzte post schon etwas älter ist, achtet doch mal darauf das der insert
korrekt abgeschlossen ist. das dieser insert nit funzt, liegt daran das am ende also
, 0.000000, 0, 0, 0);fehlt.

so funktioniert es:
INSERT INTO `vms_interface`
VALUES (
'forced-sponsor', 0, 0, 'passwort', 0, 0.000000, 0, 0.0000, 0, 0.0000, 0.0000, 0.000000, 0, 0, 0.000000, 0, 0, 0);

sind meistens kleine flüchtigkeits fehler die schonmal passieren.

SebbyPHM
08.03.2007, 17:00
Jain. Bei manchen ist die Spalten-Anzahl unterschhiedlich. Weshalb manchmal zu wenig Spalten vorhanden sind. Deshalb geht man dort lieber so vor - Und zumal ist es auch einfacher, wenn man schon lang auf ist und sich nicht mehr so ganz konzentrieren kann ;-)

NightX
08.03.2007, 17:11
Original von SebbyPHM
Und zumal ist es auch einfacher, wenn man schon lang auf ist und sich nicht mehr so ganz konzentrieren kann ;-)

:D Sorry für OT, aber er hat ja sooooooooo recht!!!

breaker
06.05.2007, 14:17
Du solltest dir generell angewöhnen, alles was in die DB geschrieben wird mit "addslashes" und "intval" zu entschärfen.....ich habe schon Portale zerbröseln sehen, weil ich mich anmelden wollte.

Zusätzlich sollten nicht nur die Werte, sondern auch die Felder in einer Query angegeben werden, ansonsten mußt du beim Script-Update, welches die betroffene Tabelle der DB erweitert, in jedem Script nachforschen, ob die Reihenfolge noch stimmt:



sql_query("INSERT INTO " . $prefix . "_tolle_tabelle ('daten_1', 'daten_2') VALUES ('" . addslashes($daten_1) . "', '" . addslashes($daten_2) . "')");


Diese Methode dürfte ein SQL-Injection schonal etwas erschweren ;)

hpshstein
06.05.2007, 15:28
http://www.klamm.de/forum/showpost.php?p=523839&postcount=7

ebenfalls sehr intressantes zu dem Thema

Ich würds eher so machen, denn addslashes verhindert das imho nur unzureichend - hab aber noch nicht geschafft eine hinzubekommen ums mal zu testen...

breaker
06.05.2007, 16:15
function db_query($query){
$args=func_get_args();
$vargs=array();
for($i=1;$i<func_num_args();$i++) {
if(get_magic_quotes_gpc()) {
$args[$i]=stripslashes($args[$i]);
}
$vargs[]=mysql_real_escape_string($args[$i]);
}
$query=vsprintf($query,$vargs);
$res=mysql_query($query);
return($res);
}
db_query('SELECT * FROM %s WHERE `%s`=%d','user','klammid',93995);


Ist mal wieder gaaaaaaanz toll :-P

Da baut jemand etwas eigenes, was nach "toll" und "sicher" aussieht, benutzt aber noch ein "$args[$i]=stripslashes($args[$i]);" um es dann ungeprüft in der DB abzufragen....da bleibe ich doch besser bei meinem "unsicheren" addslashes ;)

hpshstein
06.05.2007, 18:29
hm also ums kurz und bündig zu sagen: das beste ist wohl immer noch zu gucken, wie oft denn sql-befehle ala insert update usw in der fertigen abfrage drinn sind - isses mehr als einmal die abfrage vergessen und user schimpfen :D

breaker
06.05.2007, 20:37
Das muß ja auch nicht sein, es gibt aber durchaus Coder, die mit Verstand programmieren und sich mal ein wenig mit der Sache auseinandersetzen ....wie zb. dieser Schnipsel :


// bei <img> muss ein ALT Attribut spezifiert sein, hier versuchen die anzufuegen, falls es fehlt
$mxoutput = preg_replace('#(<img[^>]*)>#ie', 'stripslashes((preg_match("!\s*alt\s*=\s*[\'\"]!i", "\1"))?"\0":"\1 alt=\"\">")', $mxoutput);