【发布时间】: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.net/manual/en/mysqli-result.fetch-field.php可以告诉你mysqli看到的数据类型。有关数据类型代码,请参见第 1 条注释。如果它们反映了现实,您可能想进一步了解 php 方面的情况。只是一个想法