Es lassen sich nur Zahlen in die DB eintragen...
Es lassen sich nur Zahlen in die DB eintragen...
am 27.02.2006 21:02:13 von Corsin Capol
Hallo!
Ich habe eine Datenbank, die ich per PHP-Script füllen will. Das ganze
funktioniert nur solange ich Zahlen in die DB fülle, sobald ich den Feldern
Text zuweise, funktioniert der query nicht mehr.
Hat jemand eine Idee an was das liegen könnte?
- die betreffenden Felder sind vom typ char
- kollation latin1_german1_ci
- funktioniert mit phpMyAdmin
- arbeite mit PHP5 / pdo
Hier noch den query...
$query = 'INSERT INTO dbname (felder, ...) VALUES ('.variablen.', ...)';
$objDB->query($query);
Besten Dank für jeden Tip.
gruss
Corsin
Re: Es lassen sich nur Zahlen in die DB eintragen...
am 27.02.2006 21:47:07 von Niels Braczek
Corsin Capol schrieb:
> Ich habe eine Datenbank, die ich per PHP-Script füllen will. Das ganze
> funktioniert nur solange ich Zahlen in die DB fülle, sobald ich den Feldern
> Text zuweise, funktioniert der query nicht mehr.
>
> Hat jemand eine Idee an was das liegen könnte?
>
> - die betreffenden Felder sind vom typ char
> - kollation latin1_german1_ci
> - funktioniert mit phpMyAdmin
> - arbeite mit PHP5 / pdo
Strings müssen gequotet werden.
MfG
Niels
BTW: Wo ist das PHProblem?
--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · E-Commerce · Mambo Content Management |
------------------------------------------------------------ ----
Re: Es lassen sich nur Zahlen in die DB eintragen...
am 27.02.2006 22:03:26 von Corsin Capol
Besten Dank für den Denkanstoss.
Mit dem Singlequote funktionierte es nicht, jetzt mit dem Singlequote und
dem Doppelquote funzt es. Braucht es da effektiv beide, oder gibt es da auch
eine einfachere Möglichkeit?
Lösung...
$query = 'INSERT INTO dbname (felder, ...) VALUES (" '.variablen.' ", ...)';
Besten Dank!
gruss
Corsin
"Niels Braczek" schrieb im Newsbeitrag
news:dtvofo$jev$02$1@news.t-online.com...
> Corsin Capol schrieb:
>
>> Ich habe eine Datenbank, die ich per PHP-Script füllen will. Das ganze
>> funktioniert nur solange ich Zahlen in die DB fülle, sobald ich den
>> Feldern
>> Text zuweise, funktioniert der query nicht mehr.
>>
>> Hat jemand eine Idee an was das liegen könnte?
>>
>> - die betreffenden Felder sind vom typ char
>> - kollation latin1_german1_ci
>> - funktioniert mit phpMyAdmin
>> - arbeite mit PHP5 / pdo
>
> Strings müssen gequotet werden.
>
> MfG
> Niels
>
> BTW: Wo ist das PHProblem?
>
> --
> | http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
> | http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
> | Webdesign · Webhosting · E-Commerce · Mambo Content Management |
> ------------------------------------------------------------ ----
Re: Es lassen sich nur Zahlen in die DB eintragen...
am 27.02.2006 22:14:46 von Niels Braczek
Corsin Capol schrieb:
> Mit dem Singlequote funktionierte es nicht, jetzt mit dem Singlequote und
> dem Doppelquote funzt es. Braucht es da effektiv beide, oder gibt es da auch
> eine einfachere Möglichkeit?
>
> Lösung...
> $query = 'INSERT INTO dbname (felder, ...) VALUES (" '.variablen.' ", ...)';
Andersherum.
$query = "INSERT INTO dbname (felder, ...) VALUES ('{$variable}', ...)";
Die geschweiften Klammern sind hier zwar nicht unbedingt erforderlich,
in anderen Fällen aber schon. Es ist daher eine gute Idee, sich das
gleich so anzugewöhnen.
MfG
Niels
[TOFU entsorgt => http://learn.to/quote]
--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · E-Commerce · Mambo Content Management |
------------------------------------------------------------ ----
Re: Es lassen sich nur Zahlen in die DB eintragen...
am 27.02.2006 22:31:04 von Corsin Capol
Thx!
gruss
Corsin
Re: Es lassen sich nur Zahlen in die DB eintragen...
am 27.02.2006 22:36:57 von Holger Pollmann
"Corsin Capol" schrieb:
> Mit dem Singlequote funktionierte es nicht, jetzt mit dem
> Singlequote und dem Doppelquote funzt es. Braucht es da effektiv
> beide, oder gibt es da auch eine einfachere Möglichkeit?
Deine Singlequotes sind gar keine.
Du baust ja einen String zusammen, und zwar durch Verkettugn einzelner
Bestandteile.
Der Ausdruck
'INSERT INTO dbname (felder, ...) VALUES ('.variablen.', ...)'
bedeutet folgende Teile, die aneinenandergereiht werden:
'INSERT INTO dbname (felder, ...) VALUES ('
variablen
', ...)'
Das erste und das dritte sind Stringliterale, also Zeichenketten, die
als String interpretiert werden; das Interpretieren als String wird
dadurch kenntlich gemacht, daß du '' drumherun packst. In Wirklichkeit
steht da also:
Stringliteral: INSERT INTO dbname (felder, ...) VALUES (
Variable: variablen
Stringliteral: , ...)
Deine Strings enthalten also gar keine Quotes. Stellen wir uns mal vor,
wir hätten nur ein Feld namens Name, das den Wert Corsin erhalten soll,
dann lautet das, was du da oben mit fabrizieren würdest:
INSERT INTO dbname (Name) VALUES (Corsin)
Kein einziges Quotezeichen.
Das hingegen:
> Lösung...
> $query = 'INSERT INTO dbname (felder, ...) VALUES (" '.variablen.'
> ", ...)';
ergäbe:
INSERT INTO dbname (Name) VALUES ("Corsin")
Da sind Quotes drin.
> [TOFU gesnippt]
Würde es dir was ausmachen, mal bei
http://www.afaik.de/usenet/faq/zitieren/ vorbeizuschauen? Du produzierst
TOFU (Text Oben, Fullquote Unten), d.h. du schreibst deine Antwort oben
über das Zitierte und zitierst dann noch den gesamten Vortext. Es liest
sich wesentlich besser, wenn man nur genau das stehen läßt, auf das man
sich bezieht, und seine Antwort DARUNTER setzt. Danke.
--
( ROT-13 if you want to email me directly: uvuc@ervzjrexre.qr )
"Sie tragen Trauer? Der Untergang der DDR?" - "Nein, Leni Riefenstahl.
Der Führer hat sie zu sich genommen." -- Abschiedsshow Scheibenwischer,
02.10.2003
Re: Es lassen sich nur Zahlen in die DB eintragen...
am 27.02.2006 23:01:05 von Corsin Capol
Danke nochmals für die Erklärung!
Die TOFU schau ich mir auf jedenfall mal an.
gruss
Corsin
Re: Es lassen sich nur Zahlen in die DB eintragen...
am 28.02.2006 07:39:29 von Helmut Chang
Corsin Capol schrieb:
> - arbeite mit PHP5 / pdo
>
> Hier noch den query...
>
> $query = 'INSERT INTO dbname (felder, ...) VALUES ('.variablen.', ...)';
> $objDB->query($query);
>
> Besten Dank für jeden Tip.
PDO kann AFAIK Prepared Statements. Da wäre so etwas eleganter, weil du
dich nicht selbst ums Quoting und Escapen kümmern musst und genau das u.
a. der Sinn eines Abstraktionslayers ist:
$query = $objDb->prepare('INSERT INTO dbname (feld1, feld2,...)
VALUES (:param1, :param2,...)');
$query->bindParam('feld1', $value1);
$query->bindParam('feld2', $value2);
....
Hab ich auf die Schnelle hier gefunden:
gruss, heli