2012-07-04 85 views
0

我是一個新手PHP程序員,直到幾天前才聽說過PDO。到目前爲止,我只是在PHP中爲我的網站使用了默認的MySQL函數,但從我一直在閱讀的內容來看,似乎我應該切換到PDO。如何讓PDO啓動並運行?

我重新編譯了Apache,使PDO,但是當我嘗試用下面的代碼連接:

try 
{ 
    $dbh = new PDO('mysql:host=localhost;dbname=' . $dbname, $user, $pass); 
} 
catch (PDOException $e) 
{ 
    print "Error!: " . $e->getMessage() . "<br/>"; 
    die(); 
} 

我得到的錯誤:

Error!: could not find driver 

我跑的phpinfo(),發現如下有關PDO:

'./configure' '--disable-fileinfo' '--disable-phar' '--enable-bcmath' '--enable-calendar' '--enable-ftp' '--enable-gd-native-ttf' '--enable-libxml' '--enable-magic-quotes' '--enable-mbstring' '--enable-pdo=shared' '--enable-sockets' '--prefix=/usr/local' '--with-apxs2=/usr/local/apache/bin/apxs' '--with-curl=/opt/curlssl/' '--with-freetype-dir=/usr' '--with-gd' '--with-gettext' '--with-imap=/opt/php_with_imap_client/' '--with-imap-ssl=/usr' '--with-jpeg-dir=/usr' '--with-kerberos' '--with-libxml-dir=/opt/xml2/' '--with-mcrypt=/opt/libmcrypt/' '--with-mysql=/usr' '--with-mysql-sock=/var/lib/mysql/mysql.sock' '--with-mysqli=/usr/bin/mysql_config' '--with-openssl=/usr' '--with-openssl-dir=/usr' '--with-pcre-regex=/opt/pcre' '--with-pdo-sqlite=shared' '--with-png-dir=/usr' '--with-sqlite=shared' '--with-xpm-dir=/usr' '--with-zlib' '--with-zlib-dir=/usr'


PDO 
PDO support enabled 
PDO drivers  sqlite, sqlite2 

pdo_sqlite 
PDO Driver for SQLite 3.x enabled 
SQLite Library 3.7.7.1 

如何獲得PDO的工作?

感謝您的幫助!

+0

您是否在php.ini中啓用了PDO擴展? – Tio

+0

一些提示:'PDO驅動程序sqlite,sqlite2','新的PDO('mysql'...'和'錯誤!:找不到驅動程序' – Esailija

+0

我會閱讀,因爲你只有sqlite和PDO的sqlite2驅動程序,因此它的抱怨不是它不能做PDO,但它不能做mysql – BugFinder

回答

3

您還應該添加PDO-mysql擴展:

--with-pdo-mysql=shared 

一些額外的信息:

而且隨時添加數據庫的編碼:

$dbh= new PDO('mysql:dbname=dbtest;host=127.0.0.1;charset=utf8', 'user', 'pass'); 

始終禁用模擬預處理語句(for mysql)

$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 

由於您剛剛開始使用PDO,因此我還建議您使用本教程:http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

+0

偉大的鏈接,並感謝您的回答! – Nate

+0

不客氣,我總是樂意將人們從古代的mysql_函數中移走:) – PeeHaa

相關問題