Правильное чтение типов данных с помощью PHP от Postgres - PullRequest
2 голосов
/ 22 августа 2009

Как вы компилируете целочисленные данные в Postgres с помощью PHP?

Мои целые числа являются строками, как показано ниже var_dump ( $_SESSION )

  'logged_in' => int 1
  'user_id' => string '9' (length=1)                 // should be int
  'a_moderator' => string '0' (length=1)             // should be int

Я компилирую значения следующим кодом, который, очевидно, является источником проблемы после pg_prepare и pg_execute.

    while ( $row = pg_fetch_array( $result ) ) { 
        $user_id = $row['user_id'];
    }   

Ответы [ 2 ]

3 голосов
/ 22 августа 2009

Расширения базы данных PHP обычно возвращают все типы данных в виде строки, поскольку некоторые типы данных SQL не могут быть представлены в собственных типах данных PHP.

Пример: PostgreSQL BIGINT (8-байтовый целочисленный тип данных) будет переполнять тип int PHP (если PHP не скомпилирован с поддержкой 64-бит) и будет преобразован в float, что может привести к потере точности.

1 голос
/ 22 августа 2009

Вы можете преобразовать строки в целые числа, используя intval :

$str = "5";
$num = intval($str);

или по типу приведения:

$str = "5";
$num = (int) $str;

//this works too
$num = (integer) $str;

тестовый код:

<?php
   $str = "10";
   $num = intval($str);
   //$num = (int)$str;

   if ($str === 10) echo "String";
   if ($num === 10) echo "Integer";
?>

Дальнейшее чтение:

Тип Жонглирование

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...