PHP编程

五个常见 PHP 数据库问题

日期:2015/6/28来源: IT猫扑网

  揭露 php 应用程序中出现的五个常见数据库问题 —— 包括数据库模式设计、数据库访问和使用数据库的业务逻辑代码 —— 以及它们的解决方案。

  如果只有一种 方式使用数据库是正确的……

  您可以用很多的方式创建数据库设计、数据库访问和基于数据库的 PHP 业务逻辑代码,但最终一般以错误告终。本文说明了数据库设计和访问数据库的 PHP 代码中出现的五个常见问题,以及在遇到这些问题时如何修复它们。

  问题 1:直接使用 mysql

  一个常见问题是较老的 PHP 代码直接使用 mysql_ 函数来访问数据库。清单 1 展示了如何直接访问数据库。

  清单 1. access/get.php
CODE:
<?php
function get_user_id$name 
)
{
 $db mysql_connect'localhost''root''password
);
 mysql_select_db'users' 
);

 $res mysql_query"SELECT id FROM users WHERE login='".$name."'" 
);
 while$row mysql_fetch_array$res ) ) { $id $row[0
]; }

 return $id
;
}

var_dumpget_user_id'jack' 
) );
?> 
  注意使用了 mysql_connect 函数来访问数据库。还要注意查询,其中使用字符串连接来向查询添加 $name 参数。

  该技术有两个很好的替代方案:PEAR DB 模块和 PHP Data Objects (PDO) 类。两者都从特定数据库选择提供抽象。因此,您的代码无需太多调整就可以在 IBM? DB2?、MySQL、PostgreSQL 或者您想要连接到的任何其他数据库上运行。

  使用 PEAR DB 模块和 PDO 抽象层的另一个价值在于您可以在 SQL 语句中使用 ? 操作符。这样做可使 SQL 更加易于维护,且可使您的应用程序免受 SQL 注入攻击。

  使用 PEAR DB 的替代代码如下所示。

  清单 2. Access/get_good.php
CODE:
<?php
require_once("DB.php"
);

function 
get_user_id$name 
)
{
 $dsn 'mysql://root:password@localhost/users'
;
 $db =& DB::Connect$dsn
, array() );
 if (PEAR::isError($db)) { die($db->getMessage
()); }

 $res $db->query'SELECT id FROM users WHERE login=?',array( $name 
) );
 $id null
;
 while$res->fetchInto$row ) ) { $id $row[

相关文章

相关下载

网友评论

我要评论...
    没有更早的评论了
    取消