Правильное чтение типов данных с помощью PHP от Postgres

2

Как вы компилируете целочисленные данные в 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'];
    }   
  • 0
    Спасибо за ваши ответы!
Теги:
string
types
integer

2 ответа

1
Лучший ответ

Вы можете преобразовать строки в целые числа, используя 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";
?>

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

Тип Jugging

3

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню