mysql查询返回表列的错误数据类型

时间:2013-11-16 09:06:23

标签: php mysql casting var-dump

我在mysql db中查询一个包含两列的表:第一列是int类型,第二列是VARCHAR类型,我的查询如下所示:


    try {
        $PDOStatment = $db->query(
    "SELECT country_id, name   FROM country ORDER BY  country_id ;");

        } catch (Exception $e) {
            echo "Data could not be retrieved from the database.";
            exit;
        }

    $array = $PDOStatment->fetchAll(PDO::FETCH_ASSOC) ; 

    var_dump($array);
    exit;

当用var_dump($ array)检查查询结果时,我得到一个包含所有string类型项的数组! (我将我剩下的代码中的错误缩小到了这个bug),尽管country_id列使用phpMyAdmin结构选项卡正确显示为整数类型!我需要检索此列,因为它是一个整数类型,用于Web应用程序的其余代码。

2 个答案:

答案 0 :(得分:1)

就像Barmar所说的那样,字符串将自动转换为算术中的数字,因此无需担心。但是,您仍然可以使用 intval()作为预防措施,以便在剩余代码中正确使用。

因此,作为预防措施,您可以将以下代码段添加到代码中。

$result = $PDOStatement->fetchAll(PDO::FETCH_COLUMN, 0);    
foreach($result as $country_id) {
  $country_id = intval($country_id);
}

这将确保$ country_id都是整数!

答案 1 :(得分:0)

在PDO中,所有记录都将作为字符串返回,它不是bug。只需手动将其转换为您想要的类型。