PHPの問題かPDOの問題かSQLITEの問題か分かりませんが、データ型がNUMBERの列の値を検索するとsqliteからタイプ番号の値を取得する - テキストを取得する
{ foo: "580", test: 12.50, test2: 666 }
これは、サンプルコード、私の本当のクエリです:私はこのオブジェクトを取得
<?php
//...
$res = $pdo->query("SELECT SUM(id) as 'foo' FROM anytable");
$bar = $res->fetch(); //this value should be (int)
$bar['test'] = 12.50; //this value is (float)
$bar['test'] = 666; //this value is (int)
echo json_encode($bar);
?>
それらのSUMを取得し、PHPが数(整数、フロート...)の文字列isteadとしてそれらを得る
実際にはもっと複雑で、整数型または浮動小数点型の各フィールド(約90)を解析する必要はありません。データ型が混在しているからです。EDIT:VolKerkで述べたように、sqliteのためのPDOでの実装はかなり貧弱です。私はいくつかのヒントを与える$pdostmt->getColumnMeta($intColId)
の機能をテストしました。構文的にはsqliteドライバの種類と一致しないので、何か興味があれば、何かもっとテストして、ここで時間を置いておきます。
$hints = $pdostmt->getColumnMeta($intColId);
$coltype = $hints['native_type'];
結果:
sqlite data type | native_type
---------------------------------
DECIMAL | 'double'
非常識です。この問題を処理することを期待していない...少なくともsqliteのSQLコードは数学を行う。 *実験的なgetColumnMetaがあまり変化せず、安定することを期待しています。さようなら! –