2017-05-22 7 views
1

my.cnf(またはphp.ini)オプション/設定により、phpのmysqli拡張機能に正しいデータ型(つまり、int/float/string)か文字列か?mysqli fetch_assoc()が文字列としてすべてのフィールドを返しています

php7とmysql(mariaDB)の両方を使用して、2つの異なるサーバーに2つの同一のコード(変更なし)のインスタンスがあるので、私は尋ねます。ただし、クエリ結果はすべての文字列として返され、もう一方は正しいデータ型のクエリ結果を返します。

コールの線に沿って、次のとおりです。

$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)の承知している、注意してください。問題を解決する可能性が高いことを理解してください。私が知りたいのは、その他の設定/オプションがある場合です。異なるタイプのデータを返す2つの同一インスタンスがあるため、返されるデータ型に影響する可能性があります。

+0

http://php.net/manual/en/mysqli-result.fetch-field.phpでは、mysqliに表示されるデータ型を知ることができます。データ型コードの第1コメントを参照してください。彼らが現実を反映していれば、あなたは、物事のPHP側をさらに見下ろしたいと思っています。ちょっとした考え –

答えて

1

すべてのSQL数値型がPHPのint型またはfloat型として表現できるわけではありません。

たとえば、UNSIGNED INTEGERをSQLからPHP intとして保存するにはどうすればよいですか?

「同一」である2つのインスタンスが異なる動作をしている理由はわかりません。私は彼らがあなたと同じではないと思う。

関連する問題