mysql,mysqli,PDO的優劣比較

來源:文萃谷 8.56K

隨着計算機的發展,軟件技術也在不斷更新發展,以下是本站小編精心為大家整理的mysql,mysqli,PDO的優劣比較,希望對大家有所幫助!更多內容請關注應屆畢業生網!

mysql,mysqli,PDO的優劣比較

PDO,MYSQL,MYSQLI 性能哪個比較好,普通的mysql連接肯定是會被拋棄的 因為每次都要防止sql注入的問題 而且相對來説比較慢

普通的mysql連接肯定是會被拋棄的 因為每次都要防止sql注入的問題 而且相對來説比較慢

mysqli是在普通mysql的基礎上做的一次優化 説實話 很成功 預處理方式完全解決了sql注入的問題

但是唯一的不足點 就是隻支持mysql數據庫 當然 如果你要是不操作其他的數據庫或者 當然這無疑是最好的選擇

PDO則是最新出來的一種 連接方式 兼容大部分數據庫 也解決了sql注入 但是也有缺點 它只支持php5以上的版本 不過聽説在未來的php6中 只支持這種連接

PDO統一所有數據庫抽象層對象接口,mysqli只統一mysql的

簡單説,PDO可以實現同樣的代碼對不同數據庫的操作,例如你從mysql遷移到mssql,程序基本不需要改動

而mysqli簡單理解未mysql的封裝就好

在高負載的情況下開啟長連接能夠得到一個相對穩定的負載“值”。但是效率卻不是最高的。

mysql最快。mysqli其次。只是mysql和mysqli在高併發、系統高負載的時候。其所承擔的負載也是很可觀的。PDO則不會。

 【拓展閲讀】 MySQL改密碼報錯:ERROR 1045: Access denied for user: 'root@localhost' (Using password: YES)

明天去面試,今晚想看看MySQL的一些指令,雖然之前一直在用Mysql,但是感覺都是在做一些簡單的操作。結果剛開始搗騰Mysql就吃了閉門羹,我之前一直用的>mysql -uroot -p。Enter Password:123456去鏈接Mysql數據庫的,也從來沒有修改過密碼,結果當我用>mysqladmin -uroot -p123456 password abc123;指令把密碼改為“abc123”再重新連接數據庫的時候竟然一直在報:Access denied for user 'root'@'localhost' (using password:YES) 這個錯。

上網找了很多資料,知道大概是因為沒有給root設置權限的原因,方法終於是找到一種了。不過比較麻煩,但是也沒有辦法了,不弄好我的Mysql數據庫就用不了,很多開發的應用都是連的Mysql數據庫。

  大概的步驟如下:

第一步:以系統管理員身份登錄到系統;

第二步:如果MySQL服務器正在運行,停止它。 方法有兩個,1:開始菜單->控制面板->管理工具->服務,找到Mysql服務停掉。2:右擊我的電腦->管理->服務與應用->服務,找到mysql服務停掉。3:Ctrl+Alt+Delete->啟動服務管理器->服務,找到mysql服務停掉。(這一步這麼簡單,我寫的太詳細,不應該不應該啊!浪費電平啊!)

第三步:選擇一個硬盤最外面創建一個txt文件,為什麼呢?因為這個txt只是輔佐你解決掉這個錯誤,解決掉錯誤它的光榮任務就完成了,就可以壯烈犧牲了,不要感到可惜,它沒有生命的。比如放在:C:。(這個txt最好還是取這個名字,不要個性化,其他不知道行不行,我也沒有實驗過,這個名字正好是Mysql的進程名字,不要問為什麼是這個名字,計算機這東西在中國是不能問為什麼的,知道是這樣就行了。)在裏面輸入一句話:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');

後面的那串數字是我重新設置的密碼,因為我MyEclipse的項目裏面默認的都是這個密碼,你們改回自己想要的密碼就行了。

第四步:進入DOS命令提示:開始菜單->運行-> cmd ,然後cd到你安裝Mysql的目錄下,當然我的Mysql埋的'比較比較深,C:Program FilesMySQLMySQL Server 5.0bin>。如果你將MySQL安裝到了另一位置,請對下述命令進行相應的調整。 在DOS命令提示符下,執行命令:

C:Program FilesMySQLMySQL Server 5.0bin>mysqld-nt --init-file=C: 。

第五步:啟動服務,步驟和第二步一樣。在服務器啟動時,執行由“--init-file”選項(作用:在啟動時從指定的文件中讀取SQL命令)命名的文件的內容,更改根用户密碼。當服務器成功啟動後,應刪除C:。這個時候這個txt的任務完成了。如果起動MySQL服務器出錯,把進程關閉(第二步的第三種方法可以找到進程關掉)。然後重啟它,OK。

最後就可以用你在第三步設置的密碼>mysql -uroot -p 去鏈接Mysql數據庫了。

但是你會問難道我每次改密碼都要弄出這個錯來,還要犧牲一個txt才能改密碼成功嗎?就沒有一條指令搞定改密碼這種簡單的事情,當然不是啦。具體方法就是你用這條指令>mysqladmin -uroot -p123456 password abc123;改密碼的時候,要用這個指令>mysql -uroot -p123456登錄,而不是換行輸進密碼,登錄之後再在mysql>操作符後面加上一句給權限的語句(很多資料並沒有表述明白下面這條指令什麼什麼時候輸入,搞得很多人以為是在改完密碼過後立刻輸入,就會有報錯聲音):

grant all on mysql.* to 'root'@'localhost' identified by 'password';

最後那個password即是你要修改的root用户的密碼 。我這裏是“123456”這個時候下次登錄才可以用>mysql -uroot -p。Enter Password:123456登錄數據庫。

 其實以上都是廢話來,如果你想改密碼,直接用原來的密碼登錄過後,用下面任何一條指令都可以改密碼,但是要重複運行同一條指令兩次,第一次我把它當作改密碼,第二次當作授予權限,這樣一點事都沒有,你可以這樣子>mysql -uroot -p123456登錄,還可以這樣子>mysql -uroot -p。Enter Password:123456登錄。其中newpassword就是新密碼。

grant all on mydb.* to NewUserName@HostName identified by "newpassword" ;

grant usage on *.* to NewUserName@HostName identified by "newpassword";

grant select,insert,update on mydb.* to NewUserName@HostName identified by "newpassword";

grant update,delete on Table to NewUserName@HostName identified by "newpassword";

即是:

grant all onmysql.* to 'root'@'localhost' identified by "newpassword" ;

grant usage on *.* to 'root'@'localhost' identified by "newpassword";

grant select,insert,update on mydb.* to 'root'@'localhost' identified by "newpassword";

grant update,delete on Table to 'root'@'localhost' identified by "newpassword";

如果是自己電腦多點嘗試,總會發現有辦法的,公司的電腦就不要試啦,搞壞數據庫。有錯請指正。哈哈!

熱門標籤