【问题标题】:mysqli fetch_assoc() is returning all fields as strings [duplicate]mysqli fetch_assoc() 将所有字段作为字符串返回[重复]
【发布时间】:2017-10-22 06:54:18
【问题描述】:

是否有一个 my.cnf(或 php.ini)选项/设置会告诉 php 的 mysqli 扩展返回具有正确数据类型的数据(即:int/float/string)还是只返回字符串?

我问是因为我在 2 个不同的服务器上有 2 个相同代码(未修改)的实例,都使用 php7 和 mysql (mariaDB)。但是,似乎一个以所有字符串的形式返回查询结果,而另一个返回具有正确数据类型的查询结果。

电话大致如下:

$driver = new mysqli_driver();
$driver->report_mode = MYSQLI_REPORT_STRICT | MYSQLI_REPORT_ERROR;
$mysqli - new mysqli('p:'. $host, $user, $pass, $name);
$mysqli->set_charset('utf8');

$query = "SELECT fieldInt, fieldString FROM mytable";
$result = $mysqli->query($query);
$dataSet = array();
while($row = $result->fetch_assoc()){
   $dataSet[] = $row;
}

echo json_ecnode($dataSet);

请注意,我知道选项(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1);选项并了解它可能会解决问题。我想知道的是是否有 ANY OTHER 设置/选项可能会影响返回的数据类型,因为我有 2 个相同的实例返回不同类型的数据。

【问题讨论】:

标签: php mysql mysqli php-7


【解决方案1】:

并非所有 SQL 数字类型都可以表示为 PHP int 或 float 类型。

例如,您如何将 SQL 中的 UNSIGNED INTEGER 存储为 PHP int

我不知道为什么你所说的两个“相同”的实例表现不同。我怀疑它们并不像您想象的那么相同。

【讨论】:

    猜你喜欢
    • 2014-03-28
    • 2013-08-06
    • 2019-12-15
    • 2012-03-15
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    相关资源
    最近更新 更多