Per la cronaca, DOP dispone di una funzione in grado di modificare questo, PDO::ATTR_STRINGIFY_FETCHES
:
Converti valori numerici in stringhe durante il recupero. Richiede bool
.
La logica alla base dell'impostazione è che i motori di database possono gestire numeri molto grandi (Oracle, ad esempio, consente numeri a 38 cifre) e PHP no. Recuperare quei numeri come stringhe è un metodo per proteggersi e prevenire la perdita di dati.
Purtroppo, the MySQL driver does not support it:.
<?php
$pdo = new PDO('mysql:host=localhost;dbname=test', 'test', 'test');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
$sql = 'SELECT 1 AS integer_number, 3.14 AS floating_point';
$res = $pdo->query($sql);
while($row = $res->fetch(PDO::FETCH_ASSOC)){
var_dump($row);
}
array(2) {
["integer_number"]=>
string(1) "1"
["floating_point"]=>
string(4) "3.14"
}
fonte
2013-04-21 08:56:49
E funziona nella maggior parte dei casi, ma non funziona per 'SUM SELECT (...' Inoltre, come indica il nome, i vantaggi delle dichiarazioni preparate non saranno validi con questa opzione? – Haocheng
Per chi legge questa risposta in futuro: 1) No, non ha interpretato erroneamente la domanda. 2) Sì, modifica effettivamente il tipo di dati dei valori restituiti. –
@Haocheng Leggi attentamente questa frase, è doppio negativo;) –