类型为int(11)的数据库值以字符串形式返回

时间:2013-09-27 13:14:19

标签: php mysql pdo

我有一个名为customers_id的mysql数据库表列,其数据类型为int(11)。

使用

    echo gettype($customers['customers_id']);

我得到字符串作为结果和

    echo is_int($customers['customers_id']) ? 'yes' : 'no';

返回no。

为什么整数值以字符串形式返回?

更新:我使用PDO作为access_layer。

2 个答案:

答案 0 :(得分:1)

它作为字符串从PDO返回。 is_int()不会测试为true,但是如果使用is_numeric(),如果它是一串数字,它将测试为真。

$myint = '1';
echo is_int($myint) ? 'yes' : 'no'; //returns 'no'
echo is_numeric($myint) ? 'yes' : 'no'; //return 'yes'

答案 1 :(得分:-3)

你可以做的一件事是

var_dump($customers); die();

将为您提供从数据库返回的所有类型。在过去使用PDO时,我没有遇到字符串返回它们应该是INT的问题。

作为最后的手段,您可以随时将其转换为INT。

(!is_int($customers['customers_id'])) ? (int)$customers['customers_id'] : $customers['customers_id'] ;