当从MySQL返回数据时,无论MySQL数据类型如何,它都会自动以字符串形式返回。
有没有办法告诉MySQL / PHP维护数据类型(例如int),所以如果你查询一个int列,你会得到一个PHP整数而不是一个字符串?
答案 0 :(得分:15)
您可以Type casting使用PHP转换返回数据的类型。
您可以查看int
,intval
转换为整数。您也可以使用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等。