解決策は、 mysqlndを使用していることを確認することです。 php用のドライバー。
mysqlndを使用していないことをどのようにして知ることができますか?
php -i
を表示する場合 、なし 「mysqlnd」の言及。 pdo_mysql
セクションは次のようになります:
pdo_mysql
PDO Driver for MySQL => enabled Client API version => 5.1.72
どのようにインストールしますか?
L / A / M / Pのほとんどのインストールガイドでは、apt-get install php5-mysql
を提案しています。 ただし、MySQLのネイティブドライバは別のパッケージによってインストールされます:php5-mysqlnd
。これはppa:ondrej / php5-oldstableで利用できることがわかりました 。
新しいドライバーに切り替えるには(Ubuntuの場合):
- 古いドライバーを削除します:
apt-get remove php5-mysql
- 新しいドライバーをインストールします:
apt-get install php5-mysqlnd
- apache2を再起動します:
service apache2 restart
ドライバーが使用されていることを確認するにはどうすればよいですか?
今php -i
pdo_mysql
で明示的に「mysqlnd」に言及します セクション:
pdo_mysql
PDO Driver for MySQL => enabled
Client API version => mysqlnd 5.0.10 - 20111026 - $Id: e707c415db32080b3752b232487a435ee0372157 $
PDO設定
PDO::ATTR_EMULATE_PREPARES
であることを確認してください false
です (デフォルトを確認するか、設定してください):
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
PDO::ATTR_STRINGIFY_FETCHES
であることを確認してください false
です (デフォルトを確認するか、設定してください):
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
戻り値
- 浮動小数点型(FLOAT、DOUBLE)は、PHP浮動小数点として返されます。
- 整数型(INTEGER、INT、SMALLINT、TINYINT、MEDIUMINT、BIGINT†)はPHP整数として返されます。
- 固定小数点型(DECIMAL、NUMERIC)は文字列として返されます。
†64ビットsignedint(9223372036854775807)より大きい値のBIGINTは、文字列(または32ビットシステムでは32ビット)として返されます
object(stdClass)[915]
public 'integer_col' => int 1
public 'double_col' => float 1.55
public 'float_col' => float 1.5
public 'decimal_col' => string '1.20' (length=4)
public 'bigint_col' => string '18446744073709551615' (length=20)