[GastForen Programmierung/Entwicklung PHP und MySQL DBeintrag ist nicht wie erwartet

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

DBeintrag ist nicht wie erwartet

Pozor
Beiträge gesamt: 892

16. Jun 2003, 13:31
Beitrag # 1 von 6
Bewertung:
(1313 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo,

ich habe folgenden mysqlqery:

$insert_id = "INSERT INTO ac_sessid ";
$insert_id .= "(sessid, variables, userid)";
$insert_id .= "VALUES";
$insert_id .= "('{$this->sess_id}','{$array_vars}','1')";
mysql_query($insert_id,$this->link);

der trägt auch das gewollte ein, bis auf die userid!??

ich kann anstatt der 1 auch irgend eine zahl nehmen es steht immer 0 in der db(userid)...

Struktur der tabelle/feldes:
Field Type Attributes Null Default
userid int(11) unsigned No 1

ob unsigned oder agr nichts bei attribut ändert nichts an der sachlage...


gruss Pozor

PS:

lässt sich auch mit
UPDATE
nicht verändern...??? hilfee

(Dieser Beitrag wurde von Pozor am 16. Jun 2003, 13:49 geändert)
X

DBeintrag ist nicht wie erwartet

Miro Dietiker
Beiträge gesamt: 699

16. Jun 2003, 22:47
Beitrag # 2 von 6
Beitrag ID: #39733
Bewertung:
(1313 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hey Pozor!

Ich kann mich nicht erinnern, dass mySQL die Zeichen { } jemals in
der Referenz erwähnt!

Folgende Infos:
- Felder mit Zahlentypen können in sql direkt zugewiesen werden:
INSERT INTO table (zahl) VALUES (100);
- Felder mit Zahlentypen können aber auch als String übergeben
werden: INSERT INTO table (zahl) VALUES ('100');
Effektiv wandelt nun mySQL den String '100' in die Zahl 100 um
weil das Feld ja den Typ Integer hat...
Natürlich muss mySQL auch den String 100 in die Zahl 100
umwandeln für die interne Speicherung als Zahlenfeld
- ALLE anderen Zeichen!!! können bei Zahlzuweisungen natürlich
nicht vernünftig umgesetzt werden!
- Bei Zeichenfeldern gilt es nur die Quotes umzusetzen/escapen,
wobei natürlich alle Zeichen (innerhalb Systemzeichensatz)
erlaubt sind. Beachte, dass für Binäre Folgen auch statt
Textfeldern ein BLOB verwendet werden soll!

Von dem Fehlerbehafteten Block:

$insert_id = "INSERT INTO ac_sessid ";
$insert_id .= "(sessid, variables, userid)";
$insert_id .= "VALUES";
$insert_id .= "('{$this->sess_id}','{$array_vars}','1')";
mysql_query($insert_id,$this->link);

Musst du demnach nur noch die eine Zeile anpassen zu:
$insert_id .= "('$this->sess_id','{$array_vars}','1')";
(PS: Zuerst Tippfehler in der Korrektur!)

Fertig!

GrEeZ: Miro Dietiker


als Antwort auf: [#39631]
(Dieser Beitrag wurde von Miro Dietiker am 16. Jun 2003, 22:48 geändert)

DBeintrag ist nicht wie erwartet

Pozor
Beiträge gesamt: 892

16. Jun 2003, 23:04
Beitrag # 3 von 6
Beitrag ID: #39739
Bewertung:
(1313 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo Miro,

habs so geändert... es geht nicht... immer noch immer 0!
habe es ohne ' ' geschrieben geht nicht...
habe eine variable ohne ' ' eingesetzt (mit int wert) geht nicht...
habe eine variable mit ' ' eingesetzt (mit int wert) geht nicht...

$insert_id .= "('$this->sess_id','$array_vars','1')";
$insert_id .= "('$this->sess_id','{$array_vars}','1')";
$insert_id .= "('{$this->sess_id}','$array_vars','1')";
$insert_id .= "('{$this->sess_id}','{$array_vars}','1')";
geht alles nicht...

ich weiss nicht was da los ist??

gruss Pozor

leicht verwirrt und den kopf voller DS...


als Antwort auf: [#39631]
(Dieser Beitrag wurde von Pozor am 17. Jun 2003, 10:07 geändert)

DBeintrag ist nicht wie erwartet

Pozor
Beiträge gesamt: 892

18. Jun 2003, 22:39
Beitrag # 4 von 6
Beitrag ID: #40128
Bewertung:
(1313 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo,

myadmin:
INSERT INTO ac_sessid (sessid, variables, userid)VALUES('a695ffa026e54b41ce70b841c850a2c3','a:1:{s:8:\"validity\";s:6:\"public\";}', 2 )
php:
INSERT INTO ac_sessid (sessid, variables, userid)VALUES('7testcookief3b9087c33de5ba9fd491','a:1:{s:8:\"validity\";s:6:\"public\";}', 35 )
von hand php:
INSERT INTO ac_sessid (sessid, variables, userid)VALUES('a695ffa026e54b41ce70b841c850a2c3','a:1:{s:8:\"validity\";s:6:\"public\";}', 2 )
ursprünglicher insert befehl (das urProblemkind...):
INSERT INTO ac_sessid (sessid, variables, userid)VALUES('a695ffa026e54b41ce70b841c850a2c3','a:1:{s:8:"validity";s:6:"public";}', 2 )


dies sind meine insert befehle...
so geht er wenn ich ihn von hand per php my admin reeinschreibe...
er geht auch mit php my admin ohne backslashes...

der von hand eingegebene php insertbefehl tut im skript...

der generierte sql befehl tut nicht sie sehen aber gleich aus.. ???
habe mit addslashes rumgespielt... wäre eigentlich schon das richtige instrument oder??? (nur für die vars...)

das urproblemkind sah nach der dynamischen erzeugung so aus wie er da steht... und tut natürlich nicht!!

ich nehme stark an dass es etwas mit den backslashes zu tun hat...

gruss pozor


PS: der lösung dicht auf der spur sein (und ein bisschen meo im kopf)


als Antwort auf: [#39631]
(Dieser Beitrag wurde von Pozor am 18. Jun 2003, 22:46 geändert)

DBeintrag ist nicht wie erwartet

Miro Dietiker
Beiträge gesamt: 699

18. Jun 2003, 23:12
Beitrag # 5 von 6
Beitrag ID: #40131
Bewertung:
(1313 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hmm..

Ich habe ab und zu folgendes Problem:
- Du programmierst fröhlich vor dich hin
- Du entwickelst wunderbaren code
- Du tippst irgend etwas rum und es geht nicht
- Du suchst den Fehler und findest keinen
(Es ist auch wirklich nichts sichtbares da das falsch ist!)
- Du schreibst den Code 1:1 ab (nicht kopieren!) und
plötzlich geht es!

Ursache:
- Tastendruck im Zusammenhang mit Kontrolltasten aus Versehen!
Häufig zeigen dabei Texteditoren diese entstandenen unbemerkten
Sonderzeichen garnicht an!

Probier's einfach mal mit abschreiben der massgebenden Zeichen
Hat bei mir schon etliche male geholfen, auch wenn ich es nicht
wahrhaben wollte ,)

GrEeZ: Miro Dietiker


als Antwort auf: [#39631]

DBeintrag ist nicht wie erwartet

Pozor
Beiträge gesamt: 892

19. Jun 2003, 14:10
Beitrag # 6 von 6
Beitrag ID: #40200
Bewertung:
(1313 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallöle,

so es geht immer noch nicht richtig... bis ich das feld für die variables von text auf varchar(250) umgestellt habe.. o wunder es funtzt wie es sollte!!! wiso es beim text nicht gieng ist mir ein rätzel...

beim text gieng es nur wenn ich den string von hand geschrieben in eine variable füllte...

jetzt geht es auch dynamisch..

hatt jemand eine idee wiso dieser effekt bei mir in dieser weise auftrat?

gruss Pozor

PS: jetzt kopf wieder entleert ....


als Antwort auf: [#39631]
X