pdo 查詢 mysql 返回值 int 轉 string 型別的問題
阿新 • • 發佈:2019-02-13
"mysql:dbname=$app[db_name];host=$app[db_host];port=$app[db_port];charset=utf8";
try {
$dbh = @new PDO($dsn, $app['db_username'], $app['db_password'], array(
PDO::ATTR_PERSISTENT => $app['db_pconnect'],
PDO::ATTR_EMULATE_PREPARES => false, //注意這裡
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'
));
} catch (PDOException $e) {
echo $e->getMessage();
exit();
}
$sth = $dbh->query('SELECT * FROM test');
$arr = $sth->fetchAll(PDO::FETCH_ASSOC);
$sth = null;
$dbh = null;
var_dump($arr);
//輸出:
array(3) {
[0]=>
array(6) {
["c1"]=>
int(32)
["c2"]=>
float(32.099998474121 )
["c3"]=>
float(32.099998474121)
["c4"]=>
float(32.1)
["c5"]=>
float(32.1)
["c6"]=>
string(5) "32.10"
}
[1]=>
array(6) {
["c1"]=>
int(43)
["c2"]=>
float(43.209999084473)
["c3"]=>
float(43.209999084473)
["c4"]=>
float(43.21 )
["c5"]=>
float(43.21)
["c6"]=>
string(5) "43.21"
}
[2]=>
array(6) {
["c1"]=>
int(9876543)
["c2"]=>
float(9876543)
["c3"]=>
float(9876543)
["c4"]=>
float(9876543.21)
["c5"]=>
float(9876543.21)
["c6"]=>
string(10) "9876543.21"
}
}
//如果設定 PDO::ATTR_EMULATE_PREPARES => true ,則輸出:
array(3) {
[0]=>
array(6) {
["c1"]=>
string(2) "32"
["c2"]=>
string(4) "32.1"
["c3"]=>
string(5) "32.10"
["c4"]=>
string(4) "32.1"
["c5"]=>
string(5) "32.10"
["c6"]=>
string(5) "32.10"
}
[1]=>
array(6) {
["c1"]=>
string(2) "43"
["c2"]=>
string(5) "43.21"
["c3"]=>
string(5) "43.21"
["c4"]=>
string(5) "43.21"
["c5"]=>
string(5) "43.21"
["c6"]=>
string(5) "43.21"
}
[2]=>
array(6) {
["c1"]=>
string(7) "9876543"
["c2"]=>
string(7) "9876540"
["c3"]=>
string(10) "9876543.00"
["c4"]=>
string(10) "9876543.21"
["c5"]=>
string(10) "9876543.21"
["c6"]=>
string(10) "9876543.21"
}
}
$dsn =