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


mysql query return wrong data type of a table column

我正在查询一个包含两列的表:第一列是int类型,第二列是VARCHAR类型,我的查询看起来像这样:

   尝试 {        $PDOStatment = $db->query(    "选择country_id,按country_id按国家/地区顺序命名;");        } catch (异常 $e) {            echo "无法从数据库中检索数据。            退出;        }    $array = $PDOStatment->fetchAll(PDO::FETCH_ASSOC) ;    var_dump($array);    退出;

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

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

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

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

这将确保 $country_id 都是整数!

在PDO中,所有记录都将以字符串形式返回,这不是错误。只需手动将其转换为您想要的类型即可。