php从mysql中选择并接收数据类型

时间:2011-03-23 13:17:46

标签: php mysql database variables types

从PHP中的MySQL表中选择时,结果总是字符串。有没有办法获得正确的数据类型?

考虑我的表:

 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);

有没有办法透明地从查询中正确获取数据类型?

10倍, 特拉维夫

3 个答案:

答案 0 :(得分:2)

不,来自mysql的所有数据实际上都是一个字符串,你无法用它做任何事情。

答案 1 :(得分:0)

这不是问题的答案,而是解决问题的方法(黑客?)。

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

然后,在检索所有内容时,循环遍历列/键名称并根据类型(第一个下划线之前的所有内容)和列名称(第一个下划线之后的所有内容)处理它们。

此外,这需要您编辑表格......这可能会有问题。

答案 2 :(得分:-1)

实际上没有, 你唯一能做的就是检查数据类型,

伪:

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

并检查您期望的所有类型...... 作为最后的手段,它始终是字符串。

但如果您使用PDO,您可以获取该列的dataTypes并相应地进行转换......

请参阅:List of PHP native_type's for PDO getColumnMeta()