@IvanOne

Можно ли как-то вернуть уже типизированный результат без лишних действий?

Всем привет! Возможно вопрос глупый, но не могу найти внятного ответа, есть в mysql два поля с типом integer и string. При запросе этих полей php возвращает данные в string. данные обрабатываю mysql_fetch_array. Вопрос собственно в том, можно ли как-то вернуть уже типизированный результат без лишних действий? Или придется типизировать после обработки?
  • Вопрос задан
  • 2707 просмотров
Решения вопроса 2
akashtrih
@akashtrih
Все данные из mysql возвращаются в виде строк. Хотя, можно использовать ORM, которые преобразуют данные в надлежащие типы (вроде Doctrine умеет).
Ответ написан
Комментировать
miraage
@miraage
Старый прогер
Вопрос собственно втом можно ли как то вернуть уже типизированный результат без лишних действий? Или придется типизировать после обработки?

Нет, возвращается все в строках.
Да, придется типизировать самому.

// upd.

Судя по всему, Вы юзаете нативные mysql_* функции. Советую перейти на PDO.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@TheDoctor
Автор, а какая у вас задача, для чего нужна подобная типизация?
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
Да, можно. Надо юзать mysqli или PDO с поддержкой mysqlnd.
Причем в этом случае можно будет получить от базы даже NULL - чего никаким ручным кастингом не сделаешь.

Правда, в mysqli для этого надо использовать prepare - mysqli_query() типы не возвращает. А подготовленное выражение - да:
$stmt = $db->prepare("SELECT NULL, 1, 's'");
$stmt->execute();
$res = $stmt->get_result();
$row = $res->fetch_assoc();
var_dump($row);

array(3) {
  ["NULL"]=>
  NULL
  [1]=>
  int(1)
  ["s"]=>
  string(1) "s"
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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