如何在PHP中从MySQL获取整数作为整数?

时间:2011-02-16 09:12:41

标签: php mysql mysqli types

当从MySQL返回数据时,无论MySQL数据类型如何,它都会自动以字符串形式返回。

有没有办法告诉MySQL / PHP维护数据类型(例如int),所以如果你查询一个int列,你会得到一个PHP整数而不是一个字符串?

9 个答案:

答案 0 :(得分:15)

您可以Type casting使用PHP转换返回数据的类型。

您可以查看intintval转换为整数。您也可以使用settype

settype($foo, "array");
settype($foo, "bool");
settype($foo, "boolean");
settype($foo, "float");
settype($foo, "int");
settype($foo, "integer");
settype($foo, "null");
settype($foo, "object");
settype($foo, "string");

另一种方式是:

$foo = (array)$foo;
$foo = (b)$foo;      // from PHP 5.2.1
$foo = (binary)$foo; // from PHP 5.2.1
$foo = (bool)$foo;
$foo = (boolean)$foo;
$foo = (double)$foo;
$foo = (float)$foo;
$foo = (int)$foo;
$foo = (integer)$foo;
$foo = (object)$foo;
$foo = (real)$foo;
$foo = (string)$foo;

答案 1 :(得分:8)

在MySQLi中使用bind_result:它设置正确的类型并处理NULL

答案 2 :(得分:3)

如果您正在运行Ubuntu:

sudo  apt-get remove php5-mysql
sudo  apt-get install php5-mysqlnd
sudo service apache2 restart

答案 3 :(得分:2)

一旦从MySQL数据库中提取数据,就可以使用类型转换

$row['field'] = (int)$row['field'];

答案 4 :(得分:1)

由于PHP不是强类型语言,这有点无意义,但您可以在使用之前通过settype等简单地将相关字段转换为int。

无论如何,我都不知道(我知道)自动维护这种“类型”信息。

答案 5 :(得分:0)

PHP的MySQL默认库没有任何此类选项。使用类型转换 像(int)或intval,(float)等

答案 6 :(得分:0)

在php中,你可以使用([type])来确保$ something是整数,这有助于sql注入,如果你知道它。

例如:

(int) $something;

答案 7 :(得分:0)

我不知道你在什么情况下提出这个问题。因为php变量的数据类型取决于表中列的数据类型。如果列在mysql中具有数据类型“int”,则在php(不是字符串)中获得整数。

但无论如何,您可以使用is_numeric(),is_int()或gettype()php函数来了解Mysql返回值的数据类型。 is_numeric()的问题是,即使变量包含数字字符串,它也会返回true,例如“2”。 但gettype()将返回“string”,并且is_int()将始终在提到的示例中返回false,即“2”。

一旦你知道了返回值的数据类型,就可以绑定php变量来按类型转换来维护该类型:

// Suppose this is the returned value from mysql and
// you do not know its data type.
$foo = "2";

if (gettype($foo) == "string"){
    $foo = (string) $foo;
}

您可以对变量的数据类型进行多次检查,然后相应地进行转换。

我希望这个回复会有所帮助。祝好运! :)

答案 8 :(得分:0)

  

如果您希望按价格获得值,您可以更改   从列(例如:价格)

的数据类型到FLOAT

EX:

TABLE eletronics

price        id
----------------
55.90        1
40.33        2
10.60        3
1596.90      4
56.90        5

PHP:

$sql = $pdo->query("SELECT * FROM eletronics ORDER BY price DESC");

//结果

1596.90      4
56.90        5
55.90        1
40.33        2
10.60        3
  

//订单是每个价格// OBS:你可以改变点数   ""使用str_replace()//结果:1596,90 - 56,90 - 55,90 - 40,33    - 10,60等。