pg_fetch_all () печатает целые числа как строки

я имею

$result = pg_query($dbconn, 'SELECT * FROM domain');
$d = pg_fetch_all($result);
var_dump($d);

И результат

array(2) {
[0]=>
array(2) {
["id"]=>
string(1) "1"["domainname"]=>
string(15) "stackoverflow.com"}
[1]=>
array(2) {
["id"]=>
string(1) "2"["domainname"]=>
string(13) "example.com"}
}

Здесь проблема в том, что ids отображаются в виде строки, даже если они являются целыми числами. Как я могу получить их как целые числа автоматически?

3

Решение

Вам нужно вручную преобразовать строку в соответствующий числовой тип и убедиться, что число, представленное строкой, соответствует этому числовому типу.

Несмотря на то, что во многих случаях целое число, используемое внутренне в базе данных, может иметь такой же размер байта, что и целочисленный тип, используемый php, существует слишком много особых случаев (например, 64-битные номера базы данных возвращаются в 32-битный двоичный файл PHP и т. Д.) для любой конкретной политики автоматического преобразования, чтобы быть приемлемым.

В более общем плане, PostgreSQL имеет numeric а также decimal типы, которые имеют «до 131072 цифр до десятичной точки» и «до 16383 цифр после десятичной точки» (см. таблицу 8-2 [в документации PostgreSQL]). (https://www.postgresql.org/docs/9.1/static/datatype-numeric.html

-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]