欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      總結(jié)PHP程序員最常犯的11個(gè)MySQL錯(cuò)誤(共五則)

      時(shí)間:2019-05-11 22:57:54下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《總結(jié)PHP程序員最常犯的11個(gè)MySQL錯(cuò)誤》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《總結(jié)PHP程序員最常犯的11個(gè)MySQL錯(cuò)誤》。

      第一篇:總結(jié)PHP程序員最常犯的11個(gè)MySQL錯(cuò)誤

      對(duì)于大多數(shù)web應(yīng)用來(lái)說(shuō),數(shù)據(jù)庫(kù)都是一個(gè)十分基礎(chǔ)性的部分。如果你在使用PHP,那么你很可能也在使用MySQL—LAMP系列中舉足輕重的一份子。

      對(duì)于很多新手們來(lái)說(shuō),使用PHP可以在短短幾個(gè)小時(shí)之內(nèi)輕松地寫出具有特定功能的代碼。但是,構(gòu)建一個(gè)穩(wěn)定可靠的數(shù)據(jù)庫(kù)卻需要花上一些時(shí)日和相關(guān)技能。下面列舉了我曾經(jīng)犯過(guò)的最嚴(yán)重的11個(gè)MySQL相關(guān)的錯(cuò)誤(有些同樣也反映在其他語(yǔ)言/數(shù)據(jù)庫(kù)的使用上)。004km.cn

      1、使用MyISAM而不是InnoDB

      MySQL有很多數(shù)據(jù)庫(kù)引擎,但是你最可能碰到的就是MyISAM和InnoDB。

      MySQL 默認(rèn)使用的是MyISAM。但是,很多情況下這都是一個(gè)很糟糕的選擇,除非你在創(chuàng)建一個(gè)非常簡(jiǎn)單抑或?qū)嶒?yàn)性的數(shù)據(jù)庫(kù)。外鍵約束或者事務(wù)處理對(duì)于數(shù)據(jù)完整性 是非常重要的,但MyISAM都不支持這些。另外,當(dāng)有一條記錄在插入或者更新時(shí),整個(gè)數(shù)據(jù)表都被鎖定了,當(dāng)使用量增加的時(shí)候這會(huì)產(chǎn)生非常差的運(yùn)行效率。

      結(jié)論很簡(jiǎn)單:使用InnoDB。

      2、使用PHP的mysql函數(shù)

      PHP自產(chǎn)生之日就提供了MySQL庫(kù)函數(shù)(or near as makes no difference)。很多應(yīng)用仍然在使用類似mysql_connect、mysql_query、mysql_fetch_assoc等的函數(shù),盡管PHP手冊(cè)上說(shuō):

      如果你在使用MySQL v4.1.3或者更新版本,強(qiáng)烈推薦使用您使用mysqli擴(kuò)展。

      mysqli(MySQL的加強(qiáng)版擴(kuò)展)有以下幾個(gè)優(yōu)點(diǎn):

      可選的面向?qū)ο蠼涌?/p>

      prepared表達(dá)式,這有利于阻止SQL注入攻擊,還能提高性能

      支持更多的表達(dá)式和事務(wù)處理

      另外,如果你想支持多種數(shù)據(jù)庫(kù)系統(tǒng),你還可以考慮PDO。

      3、沒(méi)有處理用戶輸入

      這或者可以這樣說(shuō)#1:永遠(yuǎn)不要相信用戶的輸入。用服務(wù)器端的PHP驗(yàn)證每個(gè)字符串,不要寄希望與JavaScript。

      4、沒(méi)有使用UTF-8

      美國(guó)、英國(guó)和澳大利亞的我們很少考慮除英語(yǔ)之外的其他語(yǔ)言。我們很得意地完成了自己的“杰作”卻發(fā)現(xiàn)它們并不能在其他地方正常運(yùn)行。

      UTF-8解決了很多國(guó)際化問(wèn)題。雖然在PHP v6.0之前它還不能很好地被支持,但這并不影響你把MySQL字符集設(shè)為UTF-8。

      5、相對(duì)于SQL,偏愛(ài)PHP

      如果你接觸MySQL不久,那么你會(huì)偏向于使用你已經(jīng)掌握的語(yǔ)言來(lái)解決問(wèn)題,這樣會(huì)導(dǎo)致寫出一些冗余、低效率的代碼。比如,你不會(huì)使用MySQL自帶的AVG()函數(shù),卻會(huì)先對(duì)記錄集中的值求和然后用PHP循環(huán)來(lái)計(jì)算平均值。

      此外,請(qǐng)注意PHP循環(huán)中的SQL查詢。通常來(lái)說(shuō),執(zhí)行一個(gè)查詢比在結(jié)果中迭代更有效率。

      所以,在分析數(shù)據(jù)的時(shí)候請(qǐng)利用數(shù)據(jù)庫(kù)系統(tǒng)的優(yōu)勢(shì),懂一些SQL的知識(shí)將大有裨益。

      6、沒(méi)有優(yōu)化數(shù)據(jù)庫(kù)查詢

      99%的PHP性能問(wèn)題都是由數(shù)據(jù)庫(kù)引起的,僅僅一個(gè)糟糕的SQL查詢就能讓你的web應(yīng)用徹底癱瘓。MySQL的EXPLAIN statement、Query Profiler,還有很多其他的工具將會(huì)幫助你找出這些萬(wàn)惡的SELECT。

      7、不能正確使用數(shù)據(jù)類型

      MySQL提供了諸如numeric、string和date等的數(shù)據(jù)類型。如果你想存儲(chǔ)一個(gè)時(shí)間,那么使用DATE或者DATETIME類型。如果這個(gè)時(shí)候用INTEGER或者STRING類型的話,那么將會(huì)使得SQL查詢非常復(fù)雜,前提是你能使用INTEGER或者STRING來(lái)定義那個(gè)類型。

      很多人傾向于擅自自定義一些數(shù)據(jù)的格式,比如,使用string來(lái)存儲(chǔ)序列化的PHP對(duì)象。這樣的話數(shù)據(jù)庫(kù)管理起來(lái)可能會(huì)變得簡(jiǎn)單些,但會(huì)使得MySQL成為一個(gè)糟糕的數(shù)據(jù)存儲(chǔ)而且之后很可能會(huì)引起故障。

      8、在查詢中使用*

      永遠(yuǎn)不要使用*來(lái)返回一個(gè)數(shù)據(jù)表所有列的數(shù)據(jù)。這是懶惰:你應(yīng)該提取你需要的數(shù)據(jù)。就算你需要所有字段,你的數(shù)據(jù)表也不可避免的會(huì)產(chǎn)生變化。

      9、不使用索引或者過(guò)度使用索引

      一般性原則是這樣的:select語(yǔ)句中的任何一個(gè)where子句表示的字段都應(yīng)該使用索引。

      舉 個(gè)例子,假設(shè)我們有一個(gè)user表,包括numeric ID(主鍵)和email address。登錄的時(shí)候,MySQL必須以一個(gè)email為依據(jù)查找正確的ID。如果使用了索引的話(這里指email),那么MySQL就能夠使用 更快的搜索算法來(lái)定位email,甚至可以說(shuō)是即時(shí)實(shí)現(xiàn)。否則,MySQL就只能順序地檢查每一條記錄直到找到正確的email address。

      有的人會(huì)在每個(gè)字段上都添加索引,遺憾的是,執(zhí)行了INSERT或者UPDATE之后這些索引都需要重新生成,這樣就會(huì)影響性能。所以,只在需要的時(shí)候添加索引。

      10、忘記備份!

      雖然比較罕見(jiàn),但是數(shù)據(jù)庫(kù)還是有崩潰的危險(xiǎn)。硬盤有可能損壞,服務(wù)器有可能崩潰,web主機(jī)提供商有可能會(huì)破產(chǎn)!丟失MySQL數(shù)據(jù)將會(huì)是災(zāi)難性的,所以請(qǐng)確保你已經(jīng)使用了自動(dòng)備份或者已經(jīng)復(fù)制到位。

      11、Bonus mistake-不考慮使用其他數(shù)據(jù)庫(kù)

      對(duì)于PHP開(kāi)發(fā)人員來(lái)說(shuō),MySQL可能是使用最廣泛的數(shù)據(jù)庫(kù)系統(tǒng),但并不是唯一的選擇。PostgreSQL和Firebird是最強(qiáng)有力的競(jìng)爭(zhēng)者:這個(gè)兩者都是開(kāi)源的,而且都沒(méi)有被公司收購(gòu)。微軟提供了sql server Express,甲骨文提供了10g Express,這兩者都是企業(yè)級(jí)數(shù)據(jù)庫(kù)的免費(fèi)版本。有時(shí)候,對(duì)于一個(gè)較小的web應(yīng)用或者嵌入式應(yīng)用,SQLite也不失為一個(gè)可行的替代方案。

      第二篇:php程序員最常犯的11個(gè)MySQL錯(cuò)誤

      中國(guó)IT職業(yè)教育領(lǐng)先品牌

      精品課程 全程面授

      php程序員最常犯的11個(gè)MySQL錯(cuò)誤

      千鋒PHP培訓(xùn)簡(jiǎn)歷制作課,意在針對(duì)人事審核簡(jiǎn)歷的幾個(gè)關(guān)鍵點(diǎn),告訴學(xué)員具體關(guān)鍵點(diǎn)怎么寫,不同關(guān)鍵點(diǎn),對(duì)應(yīng)的面試機(jī)會(huì)。今天將為大家介紹一下11個(gè)MySQL常犯的錯(cuò)誤。

      對(duì)于大多數(shù)web應(yīng)用來(lái)說(shuō),數(shù)據(jù)庫(kù)都是一個(gè)十分基礎(chǔ)性的部分。如果你在使用PHP,那么你很可能也在使用MySQL—LAMP系列中舉足輕重的一份子。

      對(duì)于很多新手們來(lái)說(shuō),使用PHP可以在短短幾個(gè)小時(shí)之內(nèi)輕松地寫出具有特定功能的代碼。但是,構(gòu)建一個(gè)穩(wěn)定可靠的數(shù)據(jù)庫(kù)卻需要花上一些時(shí)日和相關(guān)技能。下面列舉了我曾經(jīng)犯過(guò)的最嚴(yán)重的11個(gè)MySQL相關(guān)的錯(cuò)誤(有些同樣也反映在其他語(yǔ)言/數(shù)據(jù)庫(kù)的使用上)。

      1.使用MyISAM而不是InnoDB MySQL有很多數(shù)據(jù)庫(kù)引擎,但是你最可能碰到的就是MyISAM和InnoDB。MySQL默認(rèn)使用的是MyISAM。但是,很多情況下這都是一個(gè)很糟糕的選擇,除非你在創(chuàng)建一個(gè)非常簡(jiǎn)單抑或?qū)嶒?yàn)性的數(shù)據(jù)庫(kù)。外鍵約束或者事務(wù)處理對(duì)于數(shù)據(jù)完整性是非常重要的,但MyISAM都不支持這些。另外,當(dāng)有一條記錄在插入或者更新時(shí),整個(gè)數(shù)據(jù)表都被鎖定了,當(dāng)使用量增加的時(shí)候這會(huì)產(chǎn)生非常差的運(yùn)行效率。

      結(jié)論很簡(jiǎn)單:使用InnoDB。2.使用PHP的mysql函數(shù)

      PHP自產(chǎn)生之日就提供了MySQL庫(kù)函數(shù)(or near as makes no difference)。很多應(yīng)用仍然在使用類似mysql_connect、mysql_query、mysql_fetch_assoc等的函數(shù),盡管PHP手冊(cè)上說(shuō):

      千鋒教育004km.cn

      中國(guó)IT職業(yè)教育領(lǐng)先品牌

      精品課程 全程面授

      如果你在使用MySQL v4.1.3或者更新版本,強(qiáng)烈推薦使用您使用mysqli擴(kuò)展。

      mysqli(MySQL 的加強(qiáng)版擴(kuò)展)有以下幾個(gè)優(yōu)點(diǎn): 可選的面向?qū)ο蠼涌?/p>

      prepared表達(dá)式,這有利于阻止SQL注入攻擊,還能提高性能 支持更多的表達(dá)式和事務(wù)處理

      另外,如果你想支持多種數(shù)據(jù)庫(kù)系統(tǒng),你還可以考慮PDO。3.沒(méi)有處理用戶輸入

      這或者可以這樣說(shuō)#1:永遠(yuǎn)不要相信用戶的輸入。用服務(wù)器端的PHP驗(yàn)證每個(gè)字符串,不要寄希望與JavaScript。最簡(jiǎn)單的SQL注入攻擊會(huì)利用如下的代碼:

      $username = $_POST[“name”];$password = $_POST[“password”];$sql = “SELECT userid FROM usertable WHERE username=’$username’ AND password=’$password’;”;// run query…

      只要在username字段輸入”admin’;–”,這樣就會(huì)被黑到,相應(yīng)的SQL語(yǔ)句如下:

      SELECT userid FROM usertable WHERE username=’admin’;狡猾的黑客可以以admin登錄,他們不需要知道密碼,因?yàn)槊艽a段被注釋掉了。

      4.沒(méi)有使用UTF-8

      千鋒教育004km.cn

      中國(guó)IT職業(yè)教育領(lǐng)先品牌

      精品課程 全程面授

      美國(guó)、英國(guó)和澳大利亞的我們很少考慮除英語(yǔ)之外的其他語(yǔ)言。我們很得意地完成了自己的”杰作”卻發(fā)現(xiàn)它們并不能在其他地方正常運(yùn)行。

      UTF-8解決了很多國(guó)際化問(wèn)題。雖然在PHP v6.0之前它還不能很好地被支持,但這并不影響你把MySQL字符集設(shè)為UTF-8。

      5.相對(duì)于SQL,偏愛(ài)PHP 如果你接觸 MySQL不久,那么你會(huì)偏向于使用你已經(jīng)掌握的語(yǔ)言來(lái)解決問(wèn)題,這樣會(huì)導(dǎo)致寫出一些冗余、低效率的代碼。比如,你不會(huì)使用MySQL自帶的AVG()函數(shù),卻會(huì)先對(duì)記錄集中的值求和然后用PHP循環(huán)來(lái)計(jì)算平均值。

      此外,請(qǐng)注意PHP循環(huán)中的SQL查詢。通常來(lái)說(shuō),執(zhí)行一個(gè)查詢比在結(jié)果中迭代更有效率。

      所以,在分析數(shù)據(jù)的時(shí)候請(qǐng)利用數(shù)據(jù)庫(kù)系統(tǒng)的優(yōu)勢(shì),懂一些SQL的知識(shí)將大有裨益。

      6.沒(méi)有優(yōu)化數(shù)據(jù)庫(kù)查詢

      99%的PHP性能問(wèn)題都是由數(shù)據(jù)庫(kù)引起的,僅僅一個(gè)糟糕的SQL查詢就能讓你的web應(yīng)用徹底癱瘓。MySQL的EXPLAIN statement、Query Profiler,還有很多其他的工具將會(huì)幫助你找出這些萬(wàn)惡的SELECT。

      7.不能正確使用數(shù)據(jù)類型

      MySQL 提供了諸如numeric、string和date等的數(shù)據(jù)類型。如果你想存儲(chǔ)一個(gè)時(shí)間,那么使用DATE或者DATETIME類型。如果這個(gè)時(shí)候用INTEGER或者STRING類型的話,那么將會(huì)使得SQL查詢非常復(fù)雜,前提是你能使用INTEGER或者STRING來(lái)定義那個(gè)類型。

      很多人傾向于擅自自定義一些數(shù)據(jù)的格式,比如,使用string來(lái)存儲(chǔ)序列

      千鋒教育004km.cn

      中國(guó)IT職業(yè)教育領(lǐng)先品牌

      精品課程 全程面授

      化的PHP對(duì)象。這樣的話數(shù)據(jù)庫(kù)管理起來(lái)可能會(huì)變得簡(jiǎn)單些,但會(huì)使得MySQL成為一個(gè)糟糕的數(shù)據(jù)存儲(chǔ)而且之后很可能會(huì)引起故障。

      8.在查詢中使用* 永遠(yuǎn)不要使用*來(lái)返回一個(gè)數(shù)據(jù)表所有列的數(shù)據(jù)。這是懶惰:你應(yīng)該提取你需要的數(shù)據(jù)。就算你需要所有字段,你的數(shù)據(jù)表也不可避免的會(huì)產(chǎn)生變化。

      9.不使用索引或者過(guò)度使用索引

      一般性原則是這樣的:select語(yǔ)句中的任何一個(gè)where子句表示的字段都應(yīng)該使用索引。

      舉個(gè)例子,假設(shè)我們有一個(gè)user表,包括numeric ID(主鍵)和email address。登錄的時(shí)候,MySQL 必須以一個(gè)email為依據(jù)查找正確的ID。如果使用了索引的話(這里指email),那么MySQL就能夠使用更快的搜索算法來(lái)定位email,甚至可以說(shuō)是即時(shí)實(shí)現(xiàn)。否則,MySQL就只能順序地檢查每一條記錄直到找到正確的email address。

      有的人會(huì)在每個(gè)字段上都添加索引,遺憾的是,執(zhí)行了INSERT或者UPDATE之后這些索引都需要重新生成,這樣就會(huì)影響性能。所以,只在需要的時(shí)候添加索引。

      10.忘記備份

      雖然比較罕見(jiàn),但是數(shù)據(jù)庫(kù)還是有崩潰的危險(xiǎn)。硬盤有可能損壞,服務(wù)器有可能崩潰,web主機(jī)提供商有可能會(huì)破產(chǎn)!丟失MySQL數(shù)據(jù)將會(huì)是災(zāi)難性的,所以請(qǐng)確保你已經(jīng)使用了自動(dòng)備份或者已經(jīng)復(fù)制到位。

      11.Bonus mistake-不考慮使用其他數(shù)據(jù)庫(kù)

      對(duì)于PHP開(kāi)發(fā)人員來(lái)說(shuō),MySQL 可能是使用最廣泛的數(shù)據(jù)庫(kù)系統(tǒng),但并

      千鋒教育004km.cn

      中國(guó)IT職業(yè)教育領(lǐng)先品牌

      精品課程 全程面授

      不是唯一的選擇。PostgreSQL和Firebird是最強(qiáng)有力的競(jìng)爭(zhēng)者:這個(gè)兩者都是開(kāi)源的,而且都沒(méi)有被公司收購(gòu)。微軟提供了sql server Express,甲骨文提供了10g Express,這兩者都是企業(yè)級(jí)數(shù)據(jù)庫(kù)的免費(fèi)版本。有時(shí)候,對(duì)于一個(gè)較小的web應(yīng)用或者嵌入式應(yīng)用,SQLite也不失為一個(gè)可行的替代方案。

      以上就是為大家介紹的php程序員最常犯的11個(gè)MySQL錯(cuò)誤,希望能對(duì)大家有所幫助。

      千鋒教育004km.cn

      第三篇:總結(jié)PHP程序員最常犯的11個(gè)MySQL錯(cuò)誤

      總結(jié)PHP程序員最常犯的11個(gè)MySQL錯(cuò)誤

      對(duì)于大多數(shù)web應(yīng)用來(lái)說(shuō),數(shù)據(jù)庫(kù)都是一個(gè)十分基礎(chǔ)性的部分。如果你在使用PHP,那么你很可能也在使用MySQL—LAMP系列中舉足輕重的一份子。

      對(duì)于很多新手們來(lái)說(shuō),使用PHP可以在短短幾個(gè)小時(shí)之內(nèi)輕松地寫出具有特定功能的代碼。但是,構(gòu)建一個(gè)穩(wěn)定可靠的數(shù)據(jù)庫(kù)卻需要花上一些時(shí)日和相關(guān)技能。下面列舉了我曾經(jīng)犯過(guò)的最嚴(yán)重的11個(gè)MySQL相關(guān)的錯(cuò)誤(有些同樣也反映在其他語(yǔ)言/數(shù)據(jù)庫(kù)的使用上)。。

      1、使用MyISAM而不是InnoDB

      MySQL有很多數(shù)據(jù)庫(kù)引擎,但是你最可能碰到的就是MyISAM和InnoDB。

      MySQL 默認(rèn)使用的是MyISAM。但是,很多情況下這都是一個(gè)很糟糕的選擇,除非你在創(chuàng)建一個(gè)非常簡(jiǎn)單抑或?qū)嶒?yàn)性的數(shù)據(jù)庫(kù)。外鍵約束或者事務(wù)處理對(duì)于數(shù)據(jù)完整性 是非常重要的,但MyISAM都不支持這些。另外,當(dāng)有一條記錄在插入或者更新時(shí),整個(gè)數(shù)據(jù)表都被鎖定了,當(dāng)使用量增加的時(shí)候這會(huì)產(chǎn)生非常差的運(yùn)行效率。

      結(jié)論很簡(jiǎn)單:使用InnoDB。

      2、使用PHP的mysql函數(shù)

      PHP自產(chǎn)生之日就提供了MySQL庫(kù)函數(shù)(or near as makes no difference)。很多應(yīng)用仍然在使用類似mysql_connect、mysql_query、mysql_fetch_assoc等的函數(shù),盡管PHP手冊(cè)上說(shuō):

      如果你在使用MySQL v4.1.3或者更新版本,強(qiáng)烈推薦使用您使用mysqli擴(kuò)展。

      mysqli(MySQL的加強(qiáng)版擴(kuò)展)有以下幾個(gè)優(yōu)點(diǎn):

      可選的面向?qū)ο蠼涌?/p>

      prepared表達(dá)式,這有利于阻止SQL注入攻擊,還能提高性能

      支持更多的表達(dá)式和事務(wù)處理

      另外,如果你想支持多種數(shù)據(jù)庫(kù)系統(tǒng),你還可以考慮PDO。

      3、沒(méi)有處理用戶輸入

      這或者可以這樣說(shuō)#1:永遠(yuǎn)不要相信用戶的輸入。用服務(wù)器端的PHP驗(yàn)證每個(gè)字符串,不要寄希望與JavaScript。最簡(jiǎn)單的SQL注入攻擊會(huì)利用如下的代碼:

      $username = $_POST[“name”];$password = $_POST[“password”];$sql = “SELECT userid FROM usertable WHERE username='$username' AND password='$password';”;// run query...只要在username字段輸入“admin';--”,這樣就會(huì)被黑到,相應(yīng)的SQL語(yǔ)句如下:

      SELECT userid FROM usertable WHERE username='admin';

      狡猾的黑客可以以admin登錄,他們不需要知道密碼,因?yàn)槊艽a段被注釋掉了。

      4、沒(méi)有使用UTF-8

      美國(guó)、英國(guó)和澳大利亞的我們很少考慮除英語(yǔ)之外的其他語(yǔ)言。我們很得意地完成了自己的“杰作”卻發(fā)現(xiàn)它們并不能在其他地方正常運(yùn)行。

      UTF-8解決了很多國(guó)際化問(wèn)題。雖然在PHP v6.0之前它還不能很好地被支持,但這并不影響你把MySQL字符集設(shè)為UTF-8。

      5、相對(duì)于SQL,偏愛(ài)PHP

      如果你接觸MySQL不久,那么你會(huì)偏向于使用你已經(jīng)掌握的語(yǔ)言來(lái)解決問(wèn)題,這樣會(huì)導(dǎo)致寫出一些冗余、低效率的代碼。比如,你不會(huì)使用MySQL自帶的AVG()函數(shù),卻會(huì)先對(duì)記錄集中的值求和然后用PHP循環(huán)來(lái)計(jì)算平均值。

      此外,請(qǐng)注意PHP循環(huán)中的SQL查詢。通常來(lái)說(shuō),執(zhí)行一個(gè)查詢比在結(jié)果中迭代更有效率。

      所以,在分析數(shù)據(jù)的時(shí)候請(qǐng)利用數(shù)據(jù)庫(kù)系統(tǒng)的優(yōu)勢(shì),懂一些SQL的知識(shí)將大有裨益。

      6、沒(méi)有優(yōu)化數(shù)據(jù)庫(kù)查詢

      99%的PHP性能問(wèn)題都是由數(shù)據(jù)庫(kù)引起的,僅僅一個(gè)糟糕的SQL查詢就能讓你的web應(yīng)用徹底癱瘓。MySQL的EXPLAIN statement、Query Profiler,還有很多其他的工具將會(huì)幫助你找出這些萬(wàn)惡的SELECT。

      7、不能正確使用數(shù)據(jù)類型

      MySQL提供了諸如numeric、string和date等的數(shù)據(jù)類型。如果你想存儲(chǔ)一個(gè)時(shí)間,那么使用DATE或者DATETIME類型。如果這個(gè)時(shí)候用INTEGER或者STRING類型的話,那么將會(huì)使得SQL查詢非常復(fù)雜,前提是你能使用INTEGER或者STRING來(lái)定義那個(gè)類型。

      很多人傾向于擅自自定義一些數(shù)據(jù)的格式,比如,使用string來(lái)存儲(chǔ)序列化的PHP對(duì)象。這樣的話數(shù)據(jù)庫(kù)管理起來(lái)可能會(huì)變得簡(jiǎn)單些,但會(huì)使得MySQL成為一個(gè)糟糕的數(shù)據(jù)存儲(chǔ)而且之后很可能會(huì)引起故障。

      8、在查詢中使用*

      永遠(yuǎn)不要使用*來(lái)返回一個(gè)數(shù)據(jù)表所有列的數(shù)據(jù)。這是懶惰:你應(yīng)該提取你需要的數(shù)據(jù)。就算你需要所有字段,你的數(shù)據(jù)表也不可避免的會(huì)產(chǎn)生變化。

      9、不使用索引或者過(guò)度使用索引

      一般性原則是這樣的:select語(yǔ)句中的任何一個(gè)where子句表示的字段都應(yīng)該使用索引。

      舉 個(gè)例子,假設(shè)我們有一個(gè)user表,包括numeric ID(主鍵)和email address。登錄的時(shí)候,MySQL必須以一個(gè)email為依據(jù)查找正確的ID。如果使用了索引的話(這里指email),那么MySQL就能夠使用 更快的搜索算法來(lái)定位email,甚至可以說(shuō)是即時(shí)實(shí)現(xiàn)。否則,MySQL就只能順序地檢查每一條記錄直到找到正確的email address。

      有的人會(huì)在每個(gè)字段上都添加索引,遺憾的是,執(zhí)行了INSERT或者UPDATE之后這些索引都需要重新生成,這樣就會(huì)影響性能。所以,只在需要的時(shí)候添加索引。

      10、忘記備份!

      雖然比較罕見(jiàn),但是數(shù)據(jù)庫(kù)還是有崩潰的危險(xiǎn)。硬盤有可能損壞,服務(wù)器有可能崩潰,web主機(jī)提供商有可能會(huì)破產(chǎn)!丟失MySQL數(shù)據(jù)將會(huì)是災(zāi)難性的,所以請(qǐng)確保你已經(jīng)使用了自動(dòng)備份或者已經(jīng)復(fù)制到位。

      11、Bonus mistake-不考慮使用其他數(shù)據(jù)庫(kù)

      對(duì)于PHP開(kāi)發(fā)人員來(lái)說(shuō),MySQL可能是使用最廣泛的數(shù)據(jù)庫(kù)系統(tǒng),但并不是唯一的選擇。PostgreSQL和Firebird是最強(qiáng)有力的競(jìng)爭(zhēng)者:這個(gè)兩者都是開(kāi)源的,而且都沒(méi)有被公司收購(gòu)。微軟提供了sql server Express,甲骨文提供了10g Express,這兩者都是企業(yè)級(jí)數(shù)據(jù)庫(kù)的免費(fèi)版本。有時(shí)候,對(duì)于一個(gè)較小的web應(yīng)用或者嵌入式應(yīng)用,SQLite也不失為一個(gè)可行的替代方案。

      第四篇:Java程序員常犯的錯(cuò)誤

      Java程序員常犯的十大錯(cuò)誤

      無(wú)論你是一名熟練的java程序員,熟悉java的程度就像熟悉自己的手背一樣;或者你是一名java新手,你都會(huì)犯錯(cuò)誤。這是很自然的,更是人之常情。你所想象不到的確實(shí),你犯的錯(cuò)誤很可能是其他人也在犯的錯(cuò)誤,這些錯(cuò)誤犯了一次又一次。在這里我給出來(lái)了經(jīng)常犯的十大錯(cuò)誤列表,通過(guò)它我們可以發(fā)現(xiàn)它們并解決它們。

      10.在靜態(tài)方法中訪問(wèn)非靜態(tài)的成員變量(例如在main方法中)。

      許多程序員,特別是那些剛剛接觸JAVA的,都有一個(gè)問(wèn)題,就是在main方法中訪問(wèn)成員變量。Main方法一般都被標(biāo)示為“靜態(tài)的”,意思就是我們不需要實(shí)例化這個(gè)類來(lái)調(diào)用main方法。例如,java虛擬機(jī)能夠以這樣的形式來(lái)調(diào)用MyApplication類:

      MyApplication.main(命令行參數(shù));

      這里并沒(méi)有實(shí)例化MyApplication類,或者這里沒(méi)有訪問(wèn)任何的成員變量。例如下面的程序就會(huì)產(chǎn)生一個(gè)編譯器的錯(cuò)誤。

      public class StaticDemo {

      public String my_member_variable = “somedata”;public static void main(String args[]){

      // Access a non-static member from static method

      System.out.println(“This generates a compiler error” + my_member_variable);} }

      如果你要訪問(wèn)一個(gè)靜態(tài)方法中的成員變量(比如main方法),你就需要實(shí)例化一個(gè)對(duì)象。下面這段代碼示例了如何正確的訪問(wèn)一個(gè)非靜態(tài)的成員變量,其方法就是首先實(shí)例化一個(gè)對(duì)象。

      public class NonStaticDemo {

      public String my_member_variable = “somedata”;

      public static void main(String args[]){

      NonStaticDemo demo = new NonStaticDemo();

      // Access member variable of demo

      System.out.println(“This WON'T generate an error” + demo.my_member_variable);} }

      9.在重載的時(shí)候錯(cuò)誤的鍵入方法名

      重載允許程序員用新的代碼去覆蓋方法的實(shí)現(xiàn)。重載是一個(gè)便利的特性,很多面對(duì)對(duì)象的程序員都在大量的使用它。如果你使用AWT1.1的事件處理模型,你通常會(huì)覆蓋listener方法去實(shí)現(xiàn)定制的功能。一個(gè)在重載方法的時(shí)候很容易犯的錯(cuò)誤就是錯(cuò)誤的鍵入要重載的方法名。如果你錯(cuò)誤的輸入了方法名,你就不是在重載這個(gè)方法了。相反的,你是在重新定義一個(gè)方法,只不過(guò)這個(gè)方法的參數(shù)和返回類型和你要重載的方法相同罷了。

      public class MyWindowListener extends WindowAdapter { // This should be WindowClosed

      public void WindowClose(WindowEvent e){ // Exit when user closes window System.exit(0);} };

      這 個(gè)方法不會(huì)通過(guò)編譯,很容易就能捕捉找它。在過(guò)去我曾經(jīng)注意過(guò)一個(gè)方法,并且相信它是被調(diào)用的,花了很多時(shí)間找這個(gè)錯(cuò)誤。這個(gè)錯(cuò)誤的表現(xiàn)就是你的方法不會(huì) 被調(diào)用,你會(huì)以為你的方法已經(jīng)被跳過(guò)了。一種可行的解決方法就是增加一條打印輸出語(yǔ)句。在日志文件中記錄下信息?;蛘呤鞘褂酶櫿{(diào)試程序(例如VJ++或者是Borland JBuilder)來(lái)一行一行的調(diào)試。如果你的方法還不能被調(diào)用,那很可能就是你的方法名鍵入錯(cuò)誤了。

      8.比較和分配(“=”強(qiáng)于“==”)

      這是一個(gè)很容易犯的錯(cuò)誤。如果你以前使用過(guò)別的語(yǔ)言,比如Pascal,你就會(huì)知道計(jì)算機(jī)語(yǔ)言的設(shè)計(jì)們選擇這樣的方式是何等的乏味。舉個(gè)例子,在Pascal中,我們使用:=運(yùn)算符來(lái)表示分配,而使用=來(lái)表示比較。這樣好像是退回了C/C++,也就是java的起源。

      幸運(yùn)的是,即使你沒(méi)有發(fā)現(xiàn)在屏幕上發(fā)現(xiàn)這個(gè)錯(cuò)誤,你的編譯器會(huì)幫助你發(fā)現(xiàn)它。通常情況下,編譯器會(huì)報(bào)出這樣一個(gè)錯(cuò)誤信息:“不能轉(zhuǎn)換xxx到布爾類型”,這里的XXX是你用來(lái)代替比較的java類型。

      7.比較兩個(gè)對(duì)象(用==來(lái)代替instead of)當(dāng)我們使用==運(yùn)算符的時(shí)候,我們實(shí)際上是在比較兩個(gè)對(duì)象的引用,來(lái)看看他們是不是指向的同一個(gè)對(duì)象。舉個(gè)例子,我們不能使用==運(yùn)算符來(lái)比較兩個(gè)字符串是否相等。我們應(yīng)該使用.equals方法來(lái)比較兩個(gè)對(duì)象,這個(gè)方法是所有類共有的,它繼承自java.lang.Object。

      下面是比較兩個(gè)字符串相等的正確的方法。

      // Bad way

      if((abc + def)== “abcdef”){

      ......}

      // Good way

      if((abc + def).equals(“abcdef”)){

      .....}

      6.混淆值傳遞和引用傳遞。

      這是一個(gè)不太容易發(fā)現(xiàn)的錯(cuò)誤。因?yàn)?,?dāng)你看代碼的時(shí)候,你會(huì)十分確定這是一個(gè)引用傳遞,而它實(shí)際上卻是一個(gè)值傳遞。Java這兩者都會(huì)使用,所以你要理解你什么時(shí)候需要值傳遞,什么時(shí)候需要引用傳遞。當(dāng)你要傳遞一個(gè)簡(jiǎn)單的數(shù)據(jù)類型到一個(gè)函數(shù)中,比如,char、int、float或者double,你是在傳遞一個(gè)值。這個(gè)意味著這種數(shù)據(jù)類型的被復(fù)制了一個(gè)拷貝,是這個(gè)拷貝被傳遞到了函數(shù)中。如果這個(gè)函數(shù)去修改這個(gè)值,僅僅是這個(gè)值的拷貝被修改了。這個(gè)函數(shù)結(jié)束以后,將會(huì)返回到控制調(diào)用函數(shù)去,這時(shí)候那個(gè)“真正的”值沒(méi)有受到影響,沒(méi)有任何改變被存儲(chǔ)。

      如果你想修改一個(gè)簡(jiǎn)單的數(shù)據(jù)類型,可以將這個(gè)數(shù)據(jù)類型定位一個(gè)返回值或者將它封裝到一個(gè)對(duì)象中。

      當(dāng)你要傳遞一個(gè)java對(duì) 象到一個(gè)函數(shù)中,比如,數(shù)組、向量或者是一個(gè)字符串,此時(shí)你傳遞的就是一個(gè)對(duì)象的引用。這里的字符串也是一個(gè)對(duì)象,而不是一個(gè)簡(jiǎn)單數(shù)據(jù)類型。這就意味這你 要傳遞一個(gè)對(duì)象到一個(gè)函數(shù),你就要傳遞這個(gè)對(duì)象的引用,而不能去復(fù)制它。任何對(duì)這個(gè)對(duì)象的成員變量的改變都會(huì)持久化,這種改變的好壞要取決于你是否是刻意 而為之。

      有一點(diǎn)要注意,如果字符串沒(méi)有包含任何方法改變它的值的時(shí)候,你最好將它作為值來(lái)傳遞。

      5.寫一個(gè)空的異常處理。

      我知道一個(gè)空的異常處理就像忽略錯(cuò)誤一樣很誘人。但是如果真的發(fā)生了錯(cuò)誤,你不會(huì)得到一個(gè)錯(cuò)誤信息的輸出,它使得不太可能發(fā)現(xiàn)錯(cuò)誤的原因。甚至是最簡(jiǎn)單的異常處理都是很有用處的。舉個(gè)例子,在你的代碼加上try{}catch{},去試著捕捉任何的異常拋出,并打印出錯(cuò)誤信息。你不用為每個(gè)異常都寫出定制的處理(雖然這是一個(gè)很好的編程習(xí)慣)。但是不要將這個(gè)異常處理空著,否則你就不會(huì)知道有什么錯(cuò)誤發(fā)生了。

      舉例:

      public static void main(String args[]){

      try {

      // Your code goes here..}

      catch(Exception e){

      System.out.println(“Err-” + e);} }

      4.忘記java中索引是從0開(kāi)始的。

      如果你有C/C++的編程背景的話,你在使用其他編程語(yǔ)言的時(shí)候就不會(huì)發(fā)現(xiàn)同樣的問(wèn)題了。

      在java中數(shù)組的索引是從0開(kāi)始的,這就是說(shuō)第一個(gè)元素的索引必須是0.困惑了?讓我們看看例子吧。

      // Create an array of three strings String[] strArray = new String[3];

      // First element's index is actually 0 strArray[0] = “First string”;

      // Second element's index is actually 1 strArray[1] = “Second string”;

      // Final element's index is actually 2 strArray[2] = “Third and final string”;

      在這個(gè)例子中,我們定義了一個(gè)有著三個(gè)字符串的數(shù)組,當(dāng)我們?cè)L問(wèn)它的元素時(shí)候減去了一個(gè)?,F(xiàn)在,當(dāng)我們?cè)囍ピL問(wèn)strArray[3],也就是第四個(gè)元素的時(shí)候,就會(huì)有一個(gè)ArrayOutOfBoundsException異常被拋出。這個(gè)就是最明顯的例子-忘記了0索引規(guī)則。

      在其他地方0索引規(guī)則也能使你陷入麻煩。例如字符串中。假設(shè)你要從一個(gè)字符串確定的偏移位置處得到一個(gè)字符,使用String.charAt(int)函數(shù),你就能看到這個(gè)信息。但是在java中,字符串類的索引也是從0開(kāi)始的,這就是說(shuō)第一個(gè)字符的偏移位置為0,第二個(gè)為1.你可能會(huì)陷入一些麻煩,如果你不注意這個(gè)問(wèn)題的話,特別是你的應(yīng)用程序中使用了大量的字符串處理程序,那樣的話你就很可能使用錯(cuò)誤的字符,同時(shí)在運(yùn)行是拋出一個(gè)StringIndexOutOfBoundsException異常,就像ArrayOutOfBoundsException異常一樣。下面的例子證明了這些:

      public class StrDemo {

      public static void main(String args[]){

      String abc = “abc”;

      System.out.println(“Char at offset 0 : ” + abc.charAt(0));System.out.println(“Char at offset 1 : ” + abc.charAt(1));System.out.println(“Char at offset 2 : ” + abc.charAt(2));

      // This line should throw a StringIndexOutOfBoundsException System.out.println(“Char at offset 3 : ” + abc.charAt(3));} }

      同時(shí)應(yīng)該注意的是,0索引規(guī)則不應(yīng)該只應(yīng)用在數(shù)組或是字符串中,java的其他部分也會(huì)用到。但是并不是全部都會(huì)用到。Java.util.Date和java.util.Calendar,這兩個(gè)類的月份都是從0開(kāi)始的,但是日期卻通常是從1開(kāi)始的,下面的程序證明了這一點(diǎn)。

      import java.util.Date;import java.util.Calendar;

      public class ZeroIndexedDate {

      public static void main(String args[]){

      // Get today's date Date today = new Date();

      // Print return value of getMonth

      System.out.println(“Date.getMonth()returns : ” + today.getMonth());

      // Get today's date using a Calendar

      Calendar rightNow = Calendar.getInstance();

      // Print return value of get(Calendar.MONTH)

      System.out.println(“Calendar.get(month)returns : ” + rightNow.get(Calendar.MONTH));} }

      0索引規(guī)則在你不注意它的時(shí)候就會(huì)發(fā)生,如果你不想在運(yùn)行時(shí)遇到這個(gè)錯(cuò)誤的話,請(qǐng)注意查閱你的API文檔。

      3.防止線程在共享變量中并行存取。

      在寫一個(gè)多線程的應(yīng)用程序的時(shí)候,許多程序員都喜歡抄近路。而這樣會(huì)是他們的應(yīng)用程序或者是小應(yīng)用程序發(fā)生線程沖突。當(dāng)兩個(gè)或者兩個(gè)以上的線程訪問(wèn)同一個(gè)數(shù)據(jù)的時(shí)候,就存在一定的概率(概率大小取決與墨菲法則)使得兩個(gè)線程同時(shí)的訪問(wèn)或者修改同一個(gè)數(shù)據(jù)。不要愚蠢的認(rèn)為這樣的情況不會(huì)發(fā)生在單線程的應(yīng)用程序中。當(dāng)訪問(wèn)同一個(gè)數(shù)據(jù)的時(shí)候,你的線程就很可能被掛起,而第二個(gè)線程進(jìn)入是就會(huì)覆蓋第一個(gè)線程修改的地方。

      這樣的問(wèn)題不是僅僅出現(xiàn)在多線程應(yīng)用程序或者是小應(yīng)用程序中的。如果你寫了java api或者是java bean,你的代碼就很可能不是線程安全的。即使你從來(lái)沒(méi)有寫過(guò)一個(gè)使用線程的單獨(dú)的應(yīng)用程序,人們也有可能使用你的程序。為了其他人,不僅僅是你,你就應(yīng)該采取措施防止線程在共享變量中并行存取。

      怎樣來(lái)解決這個(gè)問(wèn)題呢,最簡(jiǎn)單的就是讓你的變量私有化。同時(shí)使用同步存取方法。存取方法允許訪問(wèn)似有的成員變量,但是僅僅是在一種控制方式中。下面的存取方法就能夠以安全的方式修改計(jì)數(shù)器的值。

      public class MyCounter {

      private int count = 0;// count starts at zero

      public synchronized void setCount(int amount){

      count = amount;}

      public synchronized int getCount(){

      return count;} } 2.大寫錯(cuò)誤。

      這是一個(gè)我們最經(jīng)常犯的錯(cuò)誤。它是很簡(jiǎn)單的,但是有時(shí)我們看著一個(gè)沒(méi)有大寫的變量或者方法卻并不能發(fā)現(xiàn)這個(gè)錯(cuò)誤。我自己也常常感到困惑,因?yàn)槲艺J(rèn)為這些方法和變量都是存在的,但是卻發(fā)現(xiàn)不了他們沒(méi)有大寫。

      這里你不能用銀子彈來(lái)檢查它,你只能自己訓(xùn)練著來(lái)減少這種錯(cuò)誤。這里有一個(gè)竅門:

      Java api中所用的方法和變量名都應(yīng)該以小寫字母來(lái)開(kāi)頭。所有的變量名和方法名的新詞的開(kāi)頭都要用大寫字母。如果你以這樣的形式來(lái)定義你的變量名和類名,你就是在有意識(shí)的使它們走向正確,你就能逐漸的減少這樣錯(cuò)誤的數(shù)量。這可能需要一段時(shí)間,但是在以后有可能會(huì)避免更為嚴(yán)重的錯(cuò)誤。

      下來(lái)就是java程序員最常犯的錯(cuò)誤了!!1.空指針!

      空指針是java程序員最經(jīng)常犯的錯(cuò)誤了。編譯器不會(huì)為你檢查出這個(gè)錯(cuò)誤它僅僅在運(yùn)行時(shí)在表現(xiàn)出來(lái),如果你發(fā)現(xiàn)不了它,你的用戶將很可能發(fā)現(xiàn)它。

      當(dāng)試著訪問(wèn)一個(gè)對(duì)象的時(shí)候,這個(gè)對(duì)象的引用就是空的,一個(gè)NullPointerException異常就會(huì)被拋出??罩羔樺e(cuò)誤的原因是多種多樣的,但是一般情況下發(fā)生這種錯(cuò)誤意味著你沒(méi)有對(duì)一個(gè)對(duì)象初始化,或者是你沒(méi)有檢查一個(gè)函數(shù)的返回值。

      許多函數(shù)返回一個(gè)空是用來(lái)指示一個(gè)錯(cuò)誤的條件被執(zhí)行。如果你不檢查返回值的話,你由于不可能知道發(fā)生了什么。既然原因是一個(gè)錯(cuò)誤的條件,一般的測(cè)試就不會(huì)發(fā)現(xiàn)它,這就意味著你的用戶可能在最后的時(shí)候替你發(fā)現(xiàn)它。如果API函數(shù)指明一個(gè)空的對(duì)象很可能被返回,那在使用對(duì)象的引用之前一定要進(jìn)行檢查。

      另外的原因可能是你在初始化對(duì)象的時(shí)候不規(guī)范,或者是它的初始化是有條件的。舉例,檢查下面的代碼,看看你是否能發(fā)現(xiàn)這個(gè)錯(cuò)誤。

      public static void main(String args[]){

      // Accept up to 3 parameters String[] list = new String[3];

      int index = 0;

      while((index < args.length)&&(index < 3)){

      list[index++] = args[index];}

      // Check all the parameters

      for(int i = 0;i < list.length;i++){

      if(list[i].equals “-help”){ //.........} else

      if(list[i].equals “-cp”){

      //.........}

      // else.....} }

      上面的代碼(作為人為的例子),顯示了通常的錯(cuò)誤。在某些情況下,用戶輸入了三個(gè)或者更多的參數(shù),上述代碼將會(huì)正常運(yùn)行。但是如果沒(méi)有參數(shù)被輸入,那么在運(yùn)行的時(shí)候就會(huì)得到一個(gè)空指針異 常。某些時(shí)候你的變量將會(huì)被初始化,但是其他時(shí)候它們卻不會(huì)。一個(gè)簡(jiǎn)單的解決辦法就是在你訪問(wèn)數(shù)組元素的時(shí)候先檢查它十分為空。

      總結(jié):

      這些錯(cuò)誤是我們常犯的錯(cuò)誤的一些代表。雖然在編碼的時(shí)候不可能完全的避免錯(cuò)誤,但是你應(yīng)該去避免犯一些重復(fù)的錯(cuò)誤。很明顯的是,所有的java程序員都會(huì)犯這樣的錯(cuò)誤。唯一能讓人感到安慰的就是,當(dāng)你在夜深人靜的時(shí)候去跟蹤一個(gè)錯(cuò)誤,在某時(shí)某地某個(gè)人也在犯著同樣的錯(cuò)誤。

      第五篇:php mysql學(xué)習(xí)總結(jié)剖析

      php 字符串

      反引號(hào)里面的字符必須是命令 如`pwd` 是查看當(dāng)前目錄

      轉(zhuǎn)移字符:

      符號(hào)

      含義

      雙引號(hào)

      反斜線

      n

      換行

      t

      跳位(Tab)

      常量和變量 _FILE_ 這個(gè)默認(rèn)常量是php程序文件名 _LINE_ 這個(gè)默認(rèn)常量是php程序行數(shù) E_ERROR 這個(gè)常量指到最近的錯(cuò)誤處 E_WARNING 這個(gè)常量指到最近的警告處 E_PARSE 本常量為解析語(yǔ)法有何潛在問(wèn)題處 自定義常量define(“

      “,”

      “);第一空格為常量,第二個(gè)為定義 或

      define(‘

      ‘,);同上

      有$為變量,無(wú)為常量 object為類變量,如 class foo{ function do-foo(){ echo”Doing foo”;} } $bar=new foo;

      //建立變量,其他語(yǔ)言有(),php語(yǔ)言沒(méi)有。// $bar->do-foo();

      //調(diào)用變量的方式。//->為調(diào)用類函數(shù)用的符號(hào)

      變量區(qū)分大小寫

      Php變量可以不用定義直接使用。局部變量和全局變量的區(qū)別見(jiàn)第二章,第21分鐘處圖。

      全局變量必須用$GLOBALS數(shù)組和global聲明。配置文件的globals函數(shù)須打開(kāi)

      是什么????

      $PHP_SELF

      //php文件名,全局變量 echo $GLOBALS[“PHP_SELF”];或 globals $PHP_SELF;不能echo $PHP_SELF;

      函數(shù)不區(qū)分大小寫

      靜態(tài)變量static variable

      老語(yǔ)法$foo直接用

      新語(yǔ)法$_GET[‘foo’]

      $_POST[‘foo’]

      $_SESSION[‘foo’]

      位運(yùn)算符:

      &與

      |或

      ~非

      ^異或

      << 向左移位乘法

      >> 向右移位除法 邏輯運(yùn)算:

      && 而且AND

      ||或者OR

      Xor異或

      !不Not

      符號(hào)

      意義 $

      變量

      &

      變量的地址(加在變量前)->

      類的方法或?qū)傩?=>

      數(shù)組的元素值

      ? :

      三元運(yùn)算符

      數(shù)組

      數(shù)組的下標(biāo)可以是整數(shù),也可以是字符串

      如$user[0]=”張三”;

      $user[‘zs’]=”張三”;

      $user[“zs”]=”張三”;或$user=array(“張三”,//下標(biāo)0

      echo $user[0];‘is’=>”李四”,//下標(biāo)is

      echo $user[is];或echo $user[‘is’];“ww”=>”王五”

      //下標(biāo)ww);

      echo sizeof($user);

      //記錄數(shù)

      多維數(shù)組 $user=array(array(‘張三’,88), array(‘李四’,95), array(‘王五’,99));函數(shù)

      函數(shù)不區(qū)分大小寫 函數(shù)原型:

      返回類型 函數(shù)名稱(類型 參數(shù)1, 類型 參數(shù)2…..);

      數(shù)學(xué)函數(shù)

      number abs(number)取絕對(duì)值|x| float sin(float)

      正弦計(jì)算sin(x)float cos(float)

      余弦計(jì)算cos(x)float sqrt(float)

      開(kāi)平方根計(jì)算 float log(float)

      自然對(duì)數(shù)計(jì)算lnx float log10(float)

      lgx float exp(float)

      e的x次方

      float pow(float x,float y)

      x的y次方

      double pi()

      圓周率

      void srand(int)

      配置隨機(jī)種子

      int rand([int min],[int max])

      取得隨機(jī)數(shù)

      string strtolower(string str)

      字符串全轉(zhuǎn)為小寫 string strtoupper(string str)

      字符串全轉(zhuǎn)換為大寫 string trim(string str)

      截去字符串首尾的空格 string substr(stringstring,int start,int[length])

      取子串

      下標(biāo)從0開(kāi)始。從第start位取出length個(gè)字符,start為負(fù)數(shù),從尾端算起,length為負(fù)數(shù)表示取倒數(shù)length個(gè)字符。第三章第七分鐘 int strlen(string str)取得字符串長(zhǎng)度

      int strpos(string母串,string待查字符,int[offset])

      尋找字符串中的某個(gè)字符最先出處 int strcmp(string str1,string str2)字符串比較

      string md5(string str)計(jì)算字符串的MD5哈希值 fopen(“C: mpa.txt”,”r”);fopen(http://004km.cnmit

      //提交,缺省自動(dòng)提交 set autocommit=0

      //取消自動(dòng)提交 rollback

      //回滾

      事物可以用start transaction定義

      有些語(yǔ)句自動(dòng)提交,無(wú)法回滾,如DDL語(yǔ)句 save point //回滾點(diǎn) 鎖

      lock tables 表名[read][write], 表名[read][write],… 解鎖

      unlock tables

      fulltext(title,body)

      //在標(biāo)題和主體上建立全文索引

      select * from articles where match(title,match)against(‘database’);

      select * from articles where match(title,match)

      against(‘+mysql-yoursql’ in boolean mode);

      包含mysql不包含yoursql 邏輯全文索引 against:匹配串:

      apple banana

      //找至少包含上面詞中的一個(gè)的記錄行 +apple+juice

      //兩個(gè)詞均被包含在內(nèi)

      +apple macintosh

      //包含詞”apple”,但是如果同時(shí)包含”macintosh”,它的排列將更高一點(diǎn) + apple-macintosh

      //包含”apple”但不包含” macintosh”

      “some words”

      //可以包含”some words of wisdom”但不是”some noice words”

      grant

      //授權(quán)

      grant select,insert,update,delete on *.* to ‘test_user’@’%’ identified by ‘123’;%

      //任何主機(jī)

      *.*

      //任何數(shù)據(jù)庫(kù)上的任何對(duì)象,*表示任何 123

      //密碼

      test_user

      //用戶名

      grant all privileges on *.* to admin@localhost identified by ‘123’ with grant option;

      //創(chuàng)建本地的完全超級(jí)用戶”admin,口令’123’” all privileges //完全的權(quán)限

      with grant option

      //授權(quán)給其他用戶

      刪除用戶

      revoke all on *.* from ‘test_user’@ localhost;revoke all

      //收回所有權(quán)限 flush privileges

      //刷新內(nèi)存授權(quán)表

      delete from user where user=’test_user’;

      // 刪除用戶

      delete from user where host=’localhost’ and user=’’;

      //刪除匿名用戶

      mysqladmin-uroot password 123

      //添加密碼123 mysqladmin –uroot-p123 password 456

      set password for root=password(“456”);

      update user set password=password(‘456’)where user=’root’;

      //再改密碼為456 mysqladmin –uroot –p456 password’’

      optimize table 表1,表2…;

      //mysql優(yōu)化

      load data infile ‘路徑’ into table teacher;

      或 mysqlimport school 路徑(如C:/a/b.txt)

      //導(dǎo)入

      mysqldump –opt school > school_2004_9.sql

      //將數(shù)據(jù)庫(kù)school中的表全備份到school_2004_9.sql文本文件

      mysqldump –opt school teacher student > school_2004_9.sql //僅備份表teacher和student mysqldump –databases school test > school_2004_9.sql

      //備份多個(gè)數(shù)據(jù)庫(kù)

      source school_2004_9.sql;

      //從備份文件恢復(fù)數(shù)據(jù)

      select * from emp limit(2,5);

      //查第3到第7號(hào)員工的信息

      select * from emp order by sal limit 0,5;= select * from emp order by sal limit 5;

      mysql_data_seek(resource,int row_number)將指定的結(jié)果標(biāo)識(shí)所關(guān)聯(lián)的mysql結(jié)果內(nèi)部的行指針移動(dòng)到指定的行號(hào)。接著用 mysql_fetch_row()將返回那一行,row_num從0開(kāi)始

      if(!($supername==$supervisor)||!($superpass==$superpsw))//如果用戶名和密碼有一個(gè)錯(cuò)

      action='$php_self’

      //自身執(zhí)行

      相對(duì)路徑是:../(表示當(dāng)前文件的上一級(jí)目錄);../../(表示當(dāng)前文件的上一級(jí)目錄的再上一級(jí)目錄);./(表是當(dāng)前目錄);/(表示根目錄)

      $result=mysql_query(“update vote set $select_result='{$number}',total='{$total}' where id=$id”,$db);//當(dāng)用$select_result表示某個(gè)字段(如result1到result9)傳遞$number,值等可用此表示法(當(dāng)字段為變量)

      路徑:

      $tempdir = str_replace(“",”/“,substr(dirname(__FILE__),0,-6));//這樣做可以避免在虛擬空間站找不到路徑的問(wèn)題,require $tempdir.”/include/config.inc.php";

      解決亂碼

      1選定代碼片段

      2選定修改----頁(yè)面屬性----標(biāo)題/編碼 3選擇編碼類型

      4重新載入(這步不能?。?/p>

      不懂 可直接用教程中文件名直接在百度提問(wèn),肯定有人和我學(xué)一樣的東西

      下載總結(jié)PHP程序員最常犯的11個(gè)MySQL錯(cuò)誤(共五則)word格式文檔
      下載總結(jié)PHP程序員最常犯的11個(gè)MySQL錯(cuò)誤(共五則).doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        黑馬程序員php培訓(xùn):php基礎(chǔ)教程之MySQL目錄

        MySQL目錄 安裝完畢后,MySQL會(huì)自帶一個(gè)客戶端工具 雙擊運(yùn)行,輸入密碼即可訪問(wèn)數(shù)據(jù)庫(kù) 在mysql/bin目錄中 在任務(wù)管理器中,可以看到MySQL客戶端和服務(wù)器的服務(wù) 加載PHP中的擴(kuò)展......

        php和mysql問(wèn)題及解答自己總結(jié)

        關(guān)于在學(xué)習(xí)php 和mysql的過(guò)程中遇到的問(wèn)題及解決辦法 1.安裝Easyphp(很容易,按導(dǎo)航做就可以),在安裝成功后,運(yùn)行Easyphp時(shí),提示mysql端口被占用怎么辦? 使用360軟件管家-〉開(kāi)機(jī)加速......

        課程論文常犯錯(cuò)誤總結(jié)

        1. 論文題目應(yīng)該與任務(wù)書一致,中英文保持一致。 2. 多個(gè)頓號(hào)后應(yīng)用“和”字或“與”“及”等字代替。 3. 不要四級(jí)標(biāo)題,三級(jí)標(biāo)題下面不要再有序號(hào)。如有四級(jí)標(biāo)題,可宋體加粗即......

        雅思口語(yǔ)考試常犯錯(cuò)誤總結(jié)

        雅思口語(yǔ)考試常犯錯(cuò)誤總結(jié) 看了以下的內(nèi)容,就會(huì)發(fā)現(xiàn),雅思口語(yǔ)中語(yǔ)法的重要性了,如果使用錯(cuò)誤,就會(huì)顯得詞不達(dá)意了。 1. "Chinese people use trees as chopsticks." (拿樹(shù)當(dāng)筷子......

        住宅建筑施工圖常犯錯(cuò)誤總結(jié)

        一套完整的施工圖需要注意的問(wèn)題 所有圖紙都需要注意的問(wèn)題: 1. 每一張圖紙的字體都要統(tǒng)一,(說(shuō)明上字體除外)但是其上的字體必須統(tǒng)一。 2. 每一張的三道尺寸線要表達(dá)的內(nèi)容 1)第......

        名師總結(jié)寫作中國(guó)學(xué)生常犯錯(cuò)誤

        名師總結(jié)寫作中國(guó)學(xué)生常犯錯(cuò)誤+tpo聽(tīng)說(shuō)讀寫下載 下載鏈接:錯(cuò)誤一:語(yǔ)言絕對(duì)化 根據(jù)能量守恒定律(Law of energy conservation),即“各種能量形式互相轉(zhuǎn)換是有方向和條件限制的,能......

        建施圖常犯錯(cuò)誤總結(jié)(超實(shí)用)

        建施圖常犯錯(cuò)誤總結(jié) 收藏人:jjw922817 2012-12-28 | 閱:306 轉(zhuǎn):19 | 分享 | 來(lái)源施工圖審查及繪制建施圖注意點(diǎn) 初學(xué)預(yù)算看建筑施工圖的思路和技巧 繪制建筑施工圖的步驟和方......

        總結(jié)的關(guān)于內(nèi)鏈大家常犯錯(cuò)誤

        網(wǎng)站數(shù)據(jù)的十二大內(nèi)容指標(biāo) 網(wǎng)站運(yùn)營(yíng)是一個(gè)較龐大的歷程,此中會(huì)觸及到十分多的網(wǎng)站運(yùn)營(yíng)數(shù)據(jù)方面的術(shù)語(yǔ)。對(duì)這些數(shù)據(jù)詳細(xì)的寄義的理解有助于我們駕馭整個(gè)網(wǎng)站的命根子,跟蹤網(wǎng)站......