php語言

當前位置 /首頁/計算機/php語言/列表

mysql,mysqli,PDO的優劣比較

隨著計算機的發展,軟體技術也在不斷更新發展,以下是本站小編精心為大家整理的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";

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

TAG標籤:優劣 mysqlmysqliPDO #