PHP数据库常出现哪些问题

PHP数据库常出现哪些问题

ID:43325423

大小:122.50 KB

页数:11页

时间:2019-09-29

PHP数据库常出现哪些问题_第1页
PHP数据库常出现哪些问题_第2页
PHP数据库常出现哪些问题_第3页
PHP数据库常出现哪些问题_第4页
PHP数据库常出现哪些问题_第5页
资源描述:

《PHP数据库常出现哪些问题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、PHP数据库常出现哪些问题?揭露PHP应用程序中出现的五个常见数据库问题——辺括数据库模式设计、数据库访问和使用数据库的业务逻辑代码一一以及它们的解决方案。如果只有一种方式使用数据库是正确的……您可以用很多的方式创建数据库设计、数据库访问和基于数据库的PHP业务逻辑代码,但最终一般以错误告终。本文说明了数据库设计和访问数据库的PHP代码屮出现的五个常见问题,以及在遇到这些问题时如何修复它们。问题1:直接使用MySQL一个常见问题是较老的PHP代码肓接使用mysql_函数来访问数据库。清单1展示了如何直接访问数据库。以下为引用的内容:

2、){$db=mysql_connect('localhost','root*,'password1);mysql_sclcct_db('users');$res=mysql_query(MSELECTidFROMusersWHERElogin=",.$name.'M");while($row=mysql_fetch_array($res)){$id=$row[0J;}return$id;}var_dump(gct_uscr_id('jack*));?>清单1.Access/get.php注意使用了mysql_connect函数來访问数据库。还要注意查询,其小使用字符串连接來向查询添加$nam

3、e参数。该技术冇两个很好的替代方案:PEARDB模块和PHPDataObjects(PDO)类。两者都从特定数据库选择提供抽象。因此,您的代码无需太多调整就可以在IBM®DB2®、MySQL、PostgreSQL或者您想要连接到的任何其他数据库上运行。使用PEARDB模块和PDO抽象层的另一个价值在于您可以在SQL语句中使用?操作符。这样做可使SQL更加易于维护,且可使您的应用程序免受SQL注入攻击。使用PEARDB的替代代码如下所示。以卜-为引用的内容:

4、root:password@localhost/users,;$db二&DB::Connect($dsn,array());if(PEAR::isError($db)){die($db->getMessage());}$rcs=$db->qucry(,SELECTidFROMusersWHERElogin=?array($name));Sid=null;whilc($rcs->fctchlnto($row)){$id=$row[0];}returnSid;}var_dump(get_user_id('jack*));?>清单2.Access/get_good.php注意,所有直接用到MyS

5、QL的地方都消除了,只有$dsn中的数据库连接字符串除外。此外,我们通过?操作符在SQL中使用$name变量。然后,查询的数据通过query。方法末尾的array被发送进来。问题2:不使用自动增量功能与大多数现代数据库一样,MySQL能够在每记录的基础上创建自动增量惟一标识符。除此Z外,我们仍然会看到这样的代码,即首先运行一个SELECT语句来找到最大的id,然后将该id增1,并找到一个新记录。清单3展示了一个示例坏模式。以卜-为引用的内容:DROPTABLEIFEXISTSusers;CREATETABLEusers(idMEDIUMINT,loginTEXT,passwordTEXT);

6、INSERTINTOusersVALUES(1,'jack;'pass');INSERTINTOusersVALUES(2,'joan;'pass');INSERTINTOusersVALUES(1,jane;'pass');清单3.Badid.sql这里的id字段被简单地指定为整数。所以,尽管它应该是惟一的,我们还是可以添加任何值,如CREATE语句后面的儿个INSERT语句小所示。清单4展示了将用户添加到这种类型的模式的PHP代码。以下为引用的内容:

7、);$dsn=,mysql://root:password@localhost/bad_badid';$db二&DB::Connect($dsn,array());if(PEAR::isError($db)){die($db->getMessage());}$rcs=$db->qucry("SELECTmax(id)FROMusers");Sid=null;while($res->fetchlnto($row

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。