我正在查询一个包含两列的表:第一列是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中,所有记录都将以字符串形式返回,这不是错误。只需手动将其转换为您想要的类型即可。