PDO und query() mit ODBC

PDO und query() mit ODBC

am 28.02.2006 17:30:39 von Johannes Mueller

Hallo NG,

ich versuche jetzt schon eine ganze weile mit PDO einen String in meine
Access-Datenbank zu schreiben, ohne viel Erfolg.

mein System:
WinXP SP2
Access 2003
PHP 5.1.2
Apache 2.0.55

--code--
try{
$dbh = new PDO('odbc:TestDB');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->query('INSERT INTO test ([key], [value], [note], nr) VALUES
(50,50.4,"test", 2)');
} catch (Exception $e) {
print "Error!: " . $e->getMessage();
die();
}
$dbh = null;
--/code--

meine Tabelle test in TestDB ist folgendermassen aufgebaut:

+----------+----------+-----------------+----------+-------- -+
| (auto)id | (int)key | (currency)value |(str)note | (int)nr |
+----------+----------+-----------------+----------+-------- -+

Also 2 Fragen:

1.tens: wieso versucht mein Apache eine Fehlermeldung ins WEB zu
senden, wenn ich bei den Spaltennamen "key", "note" und "value" die
eckigen Klammern im Query entferne? - sprich, wieso stürzt er ab?

2.tens: Wieso spuckt er mir sobald ich [note] im Query und bei den
values einfüge folgenden Fehler aus[1], nicht aber, wenn ich note
weglasse?

[1] Error!: SQLSTATE[07002]: COUNT field incorrect: -3010
[Microsoft][ODBC Microsoft Access Driver] 1 Parameter wurden erwartet,
aber es wurden zu wenig Parameter übergeben. (SQLExecute[-3010] at
ext\pdo_odbc\odbc_stmt.c:133)

Weiss jemand dazu rat?
Vielen dank schonmal
Johannes

--
Emails ohne "[nospam]" im Betreff werden kommentarlos gelöscht.

Re: PDO und query() mit ODBC

am 28.02.2006 19:12:27 von Johannes Mueller

Johannes Mueller schrieb:

....Stunden später...

> 1.tens: wieso versucht mein Apache eine Fehlermeldung ins WEB zu
> senden, wenn ich bei den Spaltennamen "key", "note" und "value" die
> eckigen Klammern im Query entferne? - sprich, wieso stürzt er ab?

Also:
Schlüsselwörter müssen bei ACCESS in eckigen Klammer stehen: sowohl
KEY, als auch VALUE sind schlüsselwörter, warum NOTE auch ein
Schlüsselwort sein soll ist mit noch nicht ganz klar.

> 2.tens: Wieso spuckt er mir sobald ich [note] im Query und bei den
> values einfüge folgenden Fehler aus[1], nicht aber, wenn ich note
> weglasse?
>
> [1] Error!: SQLSTATE[07002]: COUNT field incorrect: -3010
> [Microsoft][ODBC Microsoft Access Driver] 1 Parameter wurden
> erwartet, aber es wurden zu wenig Parameter übergeben.
> (SQLExecute[-3010] at ext\pdo_odbc\odbc_stmt.c:133)

Also:
das Problem ist, dass der Query in einfachen Anführungszeichen ist und
die Werte der Strings in doppelten Anführungszeichen - so geht es
nicht. Andersrum geht es dann aber sehr wohl. Merke: Query in doppelten
Anführungszeichen und Werte in einfachen Anführungszeichen.

Schönen Abend noch
Johannes

PS: ich geh jetzt in mein Wuttuch beissen!

--
Emails ohne "[nospam]" im Betreff werden kommentarlos gelöscht.

Re: PDO und query() mit ODBC

am 28.02.2006 21:40:06 von Helmut Chang

Johannes Mueller schrieb:

> Also:
> das Problem ist, dass der Query in einfachen Anführungszeichen ist und
> die Werte der Strings in doppelten Anführungszeichen - so geht es nicht.

Strings in SQL gehören auch in Single Quotes. Das ist Standard SQL.

> Andersrum geht es dann aber sehr wohl. Merke: Query in doppelten
> Anführungszeichen und Werte in einfachen Anführungszeichen.

Oder Prepared Statements in DBO verwenden (sollte das für ODBC
unterstützt werden).

gruss, heli

Re: PDO und query() mit ODBC

am 01.03.2006 12:06:58 von unknown

Post removed (X-No-Archive: yes)