Hej,
när jag sätter en svensk locale så fungerar det inte att utföra en simpel SELECT-fråga med PDO som returnerar kolumner med decimaler. Det blir tvärstopp:
CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers.
Här är min testkod:
<?php
setlocale(LC_ALL, 'sve');
$dbHost = new PDO('mssql:host=127.0.0.1;dbname=test', 'test', 'test');
$stmt = $dbHost->query("SELECT (13.37) AS TEST");
$post = $stmt->fetch();
echo $post['TEST'];
Om jag raderar setlocale() så försvinner felet. Själva anropet till setlocale() lyckas eftersom dess returvärde blir "Swedish_Sweden.1252".
Det är bara decimaltal i SQL-frågan som ställer till problem. Om jag ändrar till en varchar, datetime eller integer så uppstår inget fel.
Jag kör PHP 5.2.3 på IIS 6.0, och SQL Server 2000.
Tacksam för hjälp om hur jag kan felsöka detta!
In the primary language tag:
- All 2-letter tags are interpreted according to ISO standard 639, "Code for the representation of names of languages" [ISO 639].
...
In the first subtag:
- All 2-letter codes are interpreted as ISO 3166 alpha-2 country codes denoting the area in which the language is used.
Hur vet jag om min locale finns i MSSQL? Vad behövs installeras?
Varför påverkas ens PDO av detta?
Nu inser jag dock att jag egentligen bara ska använda setlocale() till att skriva ut dagarnas namn på svenska. Så det räcker nog med LC_TIME, vilket även gör att felet försvinner.
Men varför felar det så fatalt med LC_ALL? :P
136 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe