Allen,

Ik heb met PHP een ODBC koppeling gemaakt met een lokale DSN. Nu loop ik tegen het probleem aan dat de tabel die ik nodig heb een slahs in de naam heeft. Ik heb onderstaande code geprobeerd met andere tabelnamen zonder slashes erin en dat functioneert gewoon. De tabel in onderstaande code werkt echter niet. Is dit op te lossen en zo ja kan iemand mij vertellen hoe ?? Het betreft hier een koppeling met ons ERP pakket. Ik heb verder geen invloed op veldnamen e.d.

$sql = "Select * from D/L_Kop";
$rs=odbc_exec($conn,$sql);
if (!$rs) {
exit("mislukt " );
}

while(odbc_fetch_row($rs)){
$nummer=odbc_result($rs,1);
echo $nummer;
}

Groeten Arno
Een slash is een deelteken en hoort dus zeker niet in een (tabel)naam te zitten.
De oplossing is de slash vervangen door een underscore (_).
Mocht dat niet kunnen dan kan je misschien backtics gebruiken (links naast de 1).
Dus Select * from `D/L_Kop`
De truuk met de `` werkt alleen bij MySQL. Aangezien het hier een ODBC-koppeling betreft, zou het me niks verbazen als dat ERP-pakket MSSQL gebruikt.

In dat geval kun je escapen met [], dus: select * from [D/L_Kop]
Dat de slash niet in de tabelnaam zou moeten zitten ben ik het direct mee eens, maar onze ERP leverancier heeft dit nu eenmaal zo gedaan. Ik kan daar niets aan veranderen helaas (althans niet met mijn toch ietwat beperkte kennis). De ERP leverancier gebruikt overigens Pervasive SQL voor zijn database. Die accepteert vermoedelijk wél slashes in de naam.

Beide escapes mogelijkheden werken bij mij helaas niet..
Uit de SQL Engine Reference van Pervasive:
Column names and table names can occur as delimited identifiers if
they contain non-ODBC standard characters. The delimiter
character for delimited identifiers is a double-quote. For example:
SELECT "last-name" FROM "non-standard-tbl"


Dit suggereert dat 'select * from "D/L_Kop"' zou moeten werken.
Willem,

Deze suggestie klopt... Ik heb het nu werkend. Had me eigenlijk nog niet verdiept in de Pervasive tabel..

Dank voor de hulp in ieder geval, ik kan weer verder.

Overigens zou ik zelf nooit dit soort tekens in database, tabel of veldnamen gebruiken, maar dat is weer een heel ander verhaal ;o)

Reageren