国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

常見(jiàn)PHP數(shù)據(jù)庫(kù)解決方案

開(kāi)發(fā) 后端
文章這里揭秘了常見(jiàn)PHP數(shù)據(jù)庫(kù)問(wèn)題的解決方案,直接使用 MySQL、不使用自動(dòng)增量功能,希望對(duì)大家有幫助。

我們?cè)谑褂肞HP連接數(shù)據(jù)庫(kù)的時(shí)候會(huì)遇到很多問(wèn)題,文章這里揭露 PHP 應(yīng)用程序中出現(xiàn)的常見(jiàn)數(shù)據(jù)庫(kù)問(wèn)題 —— 包括數(shù)據(jù)庫(kù)模式設(shè)計(jì)、數(shù)據(jù)庫(kù)訪問(wèn)和使用數(shù)據(jù)庫(kù)的業(yè)務(wù)邏輯代碼 —— 以及它們的解決方案。如果只有一種 方式使用數(shù)據(jù)庫(kù)是正確的。您可以用很多的方式創(chuàng)建PHP數(shù)據(jù)庫(kù)設(shè)計(jì)、數(shù)據(jù)庫(kù)訪問(wèn)和基于數(shù)據(jù)庫(kù)的 PHP 業(yè)務(wù)邏輯代碼,但最終一般以錯(cuò)誤告終。本文說(shuō)明了數(shù)據(jù)庫(kù)設(shè)計(jì)和訪問(wèn)數(shù)據(jù)庫(kù)的 PHP 代碼中出現(xiàn)的五個(gè)常見(jiàn)問(wèn)題,以及在遇到這些問(wèn)題時(shí)如何修復(fù)它們。

PHP數(shù)據(jù)庫(kù)問(wèn)題 1:直接使用 MySQL

一個(gè)常見(jiàn)問(wèn)題是較老的 PHP 代碼直接使用 mysql_ 函數(shù)來(lái)訪問(wèn)數(shù)據(jù)庫(kù)。清單 1 展示了如何直接訪問(wèn)數(shù)據(jù)庫(kù)。

清單 1. Access/get.php

  1. <?php  
  2. function get_user_id( $name )  
  3. {  
  4. $db = mysql_connect( 'localhost', 'root', 'password' );  
  5. mysql_select_db( 'users' );  
  6.  
  7. $res = mysql_query( "SELECT id FROM users WHERE login='".$name."'" );  
  8. while( $row = mysql_fetch_array( $res ) ) { $id = $row[0]; }  
  9.  
  10. return $id;  
  11. }  
  12.  
  13. var_dump( get_user_id( 'jack' ) );  
  14. ?>  

#T#注意使用了 mysql_connect 函數(shù)來(lái)訪問(wèn)數(shù)據(jù)庫(kù)。還要注意查詢,其中使用字符串連接來(lái)向查詢添加 $name 參數(shù)。該技術(shù)有兩個(gè)很好的替代方案:PEAR DB 模塊和 PHP Data Objects (PDO) 類(lèi)。兩者都從特定數(shù)據(jù)庫(kù)選擇提供抽象。因此,您的代碼無(wú)需太多調(diào)整就可以在 IBM? DB2?、MySQL、PostgreSQL 或者您想要連接到的任何其他數(shù)據(jù)庫(kù)上運(yùn)行。使用 PEAR DB 模塊和 PDO 抽象層的另一個(gè)價(jià)值在于您可以在 SQL 語(yǔ)句中使用 ? 操作符。這樣做可使 SQL 更加易于維護(hù),且可使您的應(yīng)用程序免受 SQL 注入攻擊。

清單 2. Access/get_good.php

  1. <?php  
  2. require_once("DB.php");  
  3. function get_user_id( $name )  
  4. {  
  5. $dsn = 'mysql://root:password@localhost/users';  
  6. $db =& DB::Connect( $dsn, array() );  
  7. if (PEAR::isError($db)) { die($db->getMessage()); }  
  8. $res = $db->query( 'SELECT id FROM users WHERE login=?',array( $name ) );  
  9. $id = null;  
  10. while( $res->fetchInto( $row ) ) { $id = $row[0]; }  
  11. return $id;  
  12. }  
  13. var_dump( get_user_id( 'jack' ) );  
  14. ?> 

注意,所有直接用到 MySQL 的地方都消除了,只有 $dsn 中的數(shù)據(jù)庫(kù)連接字符串除外。此外,我們通過(guò) ? 操作符在 SQL 中使用 $name 變量。然后,查詢的數(shù)據(jù)通過(guò) query() 方法末尾的 array 被發(fā)送進(jìn)來(lái)。

PHP數(shù)據(jù)庫(kù)問(wèn)題 2:不使用自動(dòng)增量功能

與大多數(shù)現(xiàn)代數(shù)據(jù)庫(kù)一樣,MySQL 能夠在每記錄的基礎(chǔ)上創(chuàng)建自動(dòng)增量惟一標(biāo)識(shí)符。除此之外,我們?nèi)匀粫?huì)看到這樣的代碼,即首先運(yùn)行一個(gè) SELECT 語(yǔ)句來(lái)找到最大的 id,然后將該 id 增 1,并找到一個(gè)新記錄。清單 3 展示了一個(gè)示例壞模式。

清單 3. Badid.sql

  1. DROP TABLE IF EXISTS users;  
  2. CREATE TABLE users (  
  3. id MEDIUMINT,  
  4. login TEXT,  
  5. password TEXT  
  6. );  
  7. INSERT INTO users VALUES ( 1, 'jack', 'pass' );  
  8. INSERT INTO users VALUES ( 2, 'joan', 'pass' );  
  9. INSERT INTO users VALUES ( 1, 'jane', 'pass' ); 

這里的 id 字段被簡(jiǎn)單地指定為整數(shù)。所以,盡管它應(yīng)該是惟一的,我們還是可以添加任何值,如 CREATE 語(yǔ)句后面的幾個(gè) INSERT 語(yǔ)句中所示。清單 4 展示了將用戶添加到這種類(lèi)型的模式的 PHP 代碼。

清單 4. Add_user.php

  1. <?php  
  2. require_once("DB.php");  
  3.  
  4. function add_user( $name, $pass )  
  5. {  
  6. $rows = array();  
  7.  
  8. $dsn = 'mysql://root:password@localhost/bad_badid';  
  9. $db =& DB::Connect( $dsn, array() );  
  10. if (PEAR::isError($db)) { die($db->getMessage()); }  
  11.  
  12. $res = $db->query( "SELECT max(id) FROM users" );  
  13. $id = null;  
  14. while( $res->fetchInto( $row ) ) { $id = $row[0]; }  
  15.  
  16. $id += 1;  
  17.  
  18. $sth = $db->prepare( "INSERT INTO users VALUES(?,?,?)" );  
  19. $db->execute( $sth, array( $id, $name, $pass ) );  
  20.  
  21. return $id;  
  22. }  
  23.  
  24. $id = add_user( 'jerry', 'pass' );  
  25.  
  26. var_dump( $id );  
  27. ?>  

add_user.php 中的代碼首先執(zhí)行一個(gè)查詢以找到 id 的最大值。然后文件以 id 值加 1 運(yùn)行一個(gè) INSERT 語(yǔ)句。該代碼在負(fù)載很重的服務(wù)器上會(huì)在競(jìng)態(tài)條件中失敗。另外,它也效率低下。那么替代方案是什么呢?使用 MySQL 中的自動(dòng)增量特性來(lái)自動(dòng)地為每個(gè)插入創(chuàng)建惟一的 ID。

責(zé)任編輯:田樹(shù) 來(lái)源: 51CTO.com
相關(guān)推薦

2011-07-12 16:42:41

2011-07-26 16:05:19

Oracle數(shù)據(jù)庫(kù)服務(wù)器

2011-03-07 16:42:05

MySQL數(shù)據(jù)庫(kù)安全

2011-05-25 09:45:40

Oracle數(shù)據(jù)庫(kù)

2011-03-24 15:41:42

數(shù)據(jù)庫(kù)

2011-01-21 09:43:10

安恒數(shù)據(jù)庫(kù)安全安全審計(jì)

2011-07-22 17:37:18

MySQL數(shù)據(jù)庫(kù)

2018-03-26 12:58:52

數(shù)據(jù)庫(kù)OracleMySQL

2009-03-31 11:57:52

2010-05-27 18:24:09

MySQL數(shù)據(jù)庫(kù)密碼

2024-02-06 07:56:20

數(shù)據(jù)庫(kù)分布式數(shù)據(jù)庫(kù)架構(gòu)產(chǎn)品

2011-03-28 13:11:18

MySQL數(shù)據(jù)庫(kù)安全

2010-09-15 09:50:55

2011-03-03 18:09:14

2011-01-21 10:10:27

2011-08-03 14:02:02

數(shù)據(jù)庫(kù)連接ACCESS

2017-05-12 09:11:41

云計(jì)算數(shù)據(jù)庫(kù)高可用

2022-04-01 11:41:00

智能技術(shù)數(shù)據(jù)庫(kù)數(shù)據(jù)安全

2010-05-28 11:22:07

2018-02-10 19:12:14

區(qū)塊鏈數(shù)據(jù)庫(kù)解決方案
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

久久艳片www.17c.com| 国产精品美女久久久久久久| 成人精品国产亚洲| 女人天堂在线| 欧美第一页浮力影院| 日韩妆和欧美的一区二区| 日韩美女免费线视频| 中文字幕精品一区二区精品| 欧美性猛片xxxx免费看久爱| 亚洲国产成人在线| 91影院在线观看| 国产呦萝稀缺另类资源| 国产精品日韩欧美一区| 欧美精品播放| 久久久久久久久久久妇女| 精品国产一级毛片| 成午夜精品一区二区三区软件| 涩涩av在线| 久草免费在线视频| 美女日批视频在线观看| 麻豆av在线导航| 日本在线视频站| 91在线免费看| 成人免费高清在线播放| 久久精品色图| 国产在线观看a| av2020不卡| 国产一区二区主播在线| 久久女人天堂| 深夜激情久久| 色琪琪免费视频网站| 国产在线视频你懂| 国产一区二区三区奇米久涩| 国产精品v欧美精品v日韩精品| 精品国产中文字幕| 日本精品免费| 国产日本在线播放| 日本xxxx黄色| 毛片免费在线播放| 免费电影网站在线视频观看福利| 国产亚洲成av人片在线观看| 国产精品久久久久久久久免费高清 | 久久国产电影| 亚洲人www| www.欧美亚洲| 亚洲线精品一区二区三区八戒| 亚洲午夜久久久久中文字幕久| 在线视频欧美区| 亚洲视频在线看| 国产福利视频一区| 日本精品免费| 色综合天天色综合| 玖玖综合伊人| 色8久久久久| 国产一区亚洲| 国产激情视频一区二区三区欧美 | 色婷婷亚洲精品| 日韩激情视频在线播放| 久久成人综合视频| 国产精品伊人日日| 欧美 日韩 国产一区| 三级av在线播放| 日韩成人亚洲| 性欧美69xoxoxoxo| 91免费观看国产| 在线看日韩精品电影| 久久精品久久精品亚洲人| 成人网址在线观看| 国产第一页视频| 免费看a在线观看| 99国产精品久久一区二区三区| 亚洲电影av| 国产精品福利电影一区二区三区四区| 欧美一区二区三区成人| 国产精品高清免费在线观看| 国产麻豆电影在线观看| 在线中文字幕观看| 麻豆国产精品| 国产在线精品一区在线观看麻豆| 色94色欧美sute亚洲线路一ni| 久操成人在线视频| 一区二区不卡视频| 在线免费看a| 亚洲国产不卡| 中文字幕中文字幕一区二区| 一本一本久久a久久精品牛牛影视 一本色道久久综合亚洲精品小说 一本色道久久综合狠狠躁篇怎么玩 | 亚洲乱码日产精品bd在线观看| 国产人成网在线播放va免费| 久久精品国产68国产精品亚洲| 久久免费看少妇高潮| 亚洲欧美在线一区| 懂色av一区二区三区四区五区| 精精国产xxxx视频在线| 亚洲国产日本| 精品污污网站免费看| 亚洲aaa激情| www.男人的天堂| 伊甸园亚洲一区| 亚洲免费电影在线| 欧美洲成人男女午夜视频| 最新中文字幕免费视频| 国产一精品一av一免费爽爽| 国产a区久久久| 在线精品国产欧美| 999久久欧美人妻一区二区| 欧美大胆性生话| 国产伦精品一区二区三区在线观看| 精品少妇一区二区| 777久久精品一区二区三区无码| 香蕉视频亚洲一级| 91在线免费视频观看| 久久97久久97精品免视看| av网站在线观看不卡| 69中国xxxxxxxxx69| 天天综合网91| 欧美变态凌虐bdsm| 日本香蕉视频在线观看| 卡通动漫精品一区二区三区| 国产精品美女久久久久久| 成人午夜在线视频一区| 黄色视屏免费在线观看| 久久91精品久久久久久秒播| 亚洲美女av电影| 成全视频全集| 国产综合亚洲精品一区二| 亚洲免费视频在线观看| 国产精品第12页| 亚洲国产精品综合久久久 | 日韩欧美在线网址| 色一情一乱一伦一区二区三欧美| 中文字幕这里只有精品| 亚洲精品久久久蜜桃| 欧美三日本三级少妇三99| 国偷自产视频一区二区久| 一本高清dvd不卡在线观看| 色撸撸在线观看| 老司机午夜av| 9国产精品视频| 色777狠狠综合秋免鲁丝| 蜜芽tv福利在线视频| 99久久综合狠狠综合久久| 91在线免费看片| 欧美日韩破处视频| 色琪琪一区二区三区亚洲区| 欧美性大战久久久久xxx| 在线高清一区| 5566日本婷婷色中文字幕97| 亚洲精品**中文毛片| 一区二区三区欧美视频| 99re6这里有精品热视频| 欧美黄污视频| 91国内精品久久| 成人福利av| 欧美色成人综合| 欧美xxxx18| 91色乱码一区二区三区| 久久久久久a亚洲欧洲aⅴ| av亚洲免费| 性欧美在线看片a免费观看| av中文在线资源库| 日韩欧美一级精品久久| 中文在线一二区| 久久精品网站免费观看| 伊人再见免费在线观看高清版| 国产欧美精品| 国产精品区一区| 国产免费播放一区二区| 久久久久久久亚洲精品| 久久久成人av毛片免费观看| 日韩成人网免费视频| 成入视频在线观看| 亚洲第一av网站| 麻豆免费在线观看| 精品久久久中文| 中文字幕在线二区| 亚洲色图清纯唯美| av在线电影网站| 亚洲精品成人天堂一二三| www 四虎| 亚洲欧美日韩国产综合| 成人漫画网站免费| 亚洲精品写真福利| 日本韩国在线视频| 狠狠躁夜夜躁人人爽超碰91| 国模吧精品人体gogo| 91麻豆精品国产自产在线 | 日韩欧美在线不卡| 在线观看的黄色| 美日韩在线视频| 要久久爱电视剧全集完整观看| 日韩美女免费线视频| 97在线精品| 一区二区三区欧美成人| 成人综合在线视频| 免费h片在线| 精品久久久久久久人人人人传媒| 亚洲欧美在线人成swag| 国产精品久久视频| 美腿丝袜亚洲综合| 毛片一级免费一级|