समाधान यह सुनिश्चित करना है कि आप mysqlnd . का उपयोग कर रहे हैं php के लिए ड्राइवर।
आप कैसे जानते हैं कि आप mysqlnd का उपयोग नहीं कर रहे हैं?
php -i
देखते समय , वहाँ नहीं . होगा "mysqlnd" का उल्लेख। pdo_mysql
अनुभाग में कुछ इस तरह होगा:
pdo_mysql
PDO Driver for MySQL => enabled Client API version => 5.1.72
आप इसे कैसे स्थापित करते हैं?
एल/ए/एम/पी के लिए अधिकांश इंस्टॉलेशन गाइड apt-get install php5-mysql
का सुझाव देते हैं लेकिन MySQL के लिए मूल ड्राइवर एक अलग पैकेज द्वारा स्थापित किया गया है:php5-mysqlnd
. मैंने पाया कि यह ppa:ondrej/php5-oldstable के साथ उपलब्ध था ।
नए ड्राइवर पर स्विच करने के लिए (उबंटू पर):
- पुराने ड्राइवर को हटाएं:
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::ATTR_EMULATE_PREPARES
false
है (अपने डिफ़ॉल्ट जांचें या इसे सेट करें):$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
सुनिश्चित करें कि PDO::ATTR_STRINGIFY_FETCHES
false
है (अपने डिफ़ॉल्ट जांचें या इसे सेट करें):$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
लौटाए गए मान
- फ़्लोटिंग-पॉइंट प्रकार (फ़्लोट, डबल) PHP फ़्लोट के रूप में लौटाए जाते हैं।
- पूर्णांक प्रकार (INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT †) PHP पूर्णांक के रूप में लौटाए जाते हैं।
- फिक्स्ड-पॉइंट प्रकार (DECIMAL, NUMERIC) स्ट्रिंग के रूप में लौटाए जाते हैं।
† 64 बिट हस्ताक्षरित int (9223372036854775807) से अधिक मान वाले BIGINTs एक स्ट्रिंग (या 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)