@AlexandrMa

Как преобразовать значения к типу в PDO?

public function loadItems():array
  {
    $data = [];
    $stmt = $this->db->prepare("SELECT `id`, `name` FROM `items`");
    $stmt->execute();
    foreach($stmt->fetchAll(PDO::FETCH_ASSOC) as $item){
      $data[] = [
        'id' => intval($item['id']),
        'name' => $item['name'],
      ];
    }
    $stmt->closeCursor();
    return $data;
}

Можно как то упростить код, чтобы все integer получать в типе integer?
Если сделать просто
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
то при передаче в json_encode($data, true) я получаю поле id в виде строки. А требуется строго число.
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 2
Melkij
@Melkij
PostgreSQL DBA
Насколько я помню: https://github.com/php/php-src/blob/PHP-8.0/ext/pd...
Нужен mysqlnd для получения родных типов данных.
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Первое - проверить, какой драйвер используется. libmysql или mysqlnd. Нужен последний.
Второе - отключить эмуляцию подготовленных выражений в PDO. Надо установить PDO::ATTR_EMULATE_PREPARES в false.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы