php выбирая из mysql и получая th типы данных - PullRequest
2 голосов
/ 23 марта 2011

При выборе из таблицы MySQL в PHP результаты всегда являются строками.Есть ли способ получить правильный тип данных уже?

Рассмотрим мою таблицу:

 CREATE TABLE bar(
     id    INT,
     price FLOAT,
     name  VARCHAR(40));

Теперь я должен сделать следующее:

   $result = mysql_query("SELECT id,price,name FROM bar");
   while($row = mysql_fetch_assoc($result))
   { 
      $row['id'] = (int)$row['id'];
      $row['price'] = (double)$row['price'];
   }
   mysql_free_result($result);

Есть лиспособ правильно получить типы данных из запроса?

10x, Aviv

Ответы [ 3 ]

2 голосов
/ 23 марта 2011

Нет, все данные, которые приходят из mysql, на самом деле являются строками, и вы ничего не можете с этим сделать.

0 голосов
/ 15 ноября 2014

Это не ответ на вопрос, а скорее способ (взлом?) Обойти проблему.

CREATE TABLE bar(
    int_id       INT,
    float_price  FLOAT,
    varchar_name VARCHAR(40)
);

Затем, когда вы получаете все данные, просматривайте имена столбцов / ключей и обрабатывайте их в соответствии с типом (все до первого подчеркивания) и именем столбца (все после первого подчеркивания).

Кроме того, для этого необходимо отредактировать таблицы ... что может быть проблематично.

0 голосов
/ 23 марта 2011

на самом деле нет, единственное, что вы можете сделать, это проверить типы данных,

псевдо:

if(is_int())
    (int)....
else if(is_float())
    (float)...
else ...

и проверить все ожидаемые типы ... как последнийприбегают к строковым значениям.

, но если бы вы использовали PDO, вы могли бы получить dataTypes для столбца и соответственно преобразовать ...

см .: Список PHP native_type для PDO getColumnMeta ()

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