PHP操作mysql的幾種方法

  一般方法:

$dbhost = 'localhost';
$dbuser = 'root'; //你的mysql用户名
$dbpass = 'a'; //你的mysql密码
$dbname = 'mysql'; //你的mysql库名
$connect = mysql_connect($dbhost,$dbuser,$dbpass) or die(mysql_error());
mysql_select_db("mysql");
$sql="select * from user";
$result=mysql_query($sql) or die(mysql_error());

echo "<table>";
      while($row=mysql_fetch_array($result))
      {
         echo "<tr><td>$row[0]</td><td>$row[1]</td>
         <td>$row[2]</td></tr>";
      }
echo "</table>";

mysql_close($connect);

 使用DB类创建跨数据库

在PHP的应用中,免不了需要使用数据库,而PHP为我们提供了丰富的数据库支持:
dbase、fbsql、ibase、ifx、msql、mssql、mysql、oci8、odbc、pgsql、sqlite、
storage、sybase,面对众多的数据库,我们可以选择的函数也是多种多样的:
对于dbase,有dbase_*
对于mssql,有mssql_*
对于oci,有ora_*
……
这本应是好事,但是如果需要向其他数据库移植的时候,问题就来了:
查找dbase_*,替换为mssql_*
……
重新查找、分析、改写*_fetch_row,*_fetch_array
……
我们的恶梦开始了,如何才能开发与数据库独立的应用呢?
答案就是使用Pear中的Database 包。

Databse包现在已经包含如下三个主要类:
DB
DB_DataObject
MDB
每个类都可以完成跨数据库平台的设计任务,但是作为最早出来的DB类,
最为大家所熟悉,而其他的DB_DataObject事基于DB的、MDB的使用也和DB相类似。
所以本文简单介绍DB类的使用。

DB类是属于Pear(PHP Extension and Application Repository PHP扩展应用库)中的一个包(Database)。

首先看一个简单的使用DB类的例子:

<?php

$dsn = "mysql:host=localhost;dbname=book";
$db = new PDO($dsn, 'root', 'a');

$sql="select * from bbsmessage where title like '%级%'";
$r=$db->query($sql);

echo "<table>";
      while($row=$r->fetch())
      {
         echo "<tr><td>$row[0]</td><td>$row[1]</td>
         <td>$row[2]</td></tr>";
      }
echo "</table>";


?>

<?php
     


     require_once "DB.php";
     $dsn="mysql://root:@localhost/med";
     $db=DB::connect($dsn);
     if(DB::iserror($db))  die($db->getMessage());
     $sql="select username ,title,dateline
           from article ";
      $r=$db->query($sql);
      if(DB::iserror($r))  die($r->getMessage());
      echo "<table>";
      while($r->fetchInto($row))
      {
         echo "<tr><td>$row[0]</td><td>$row[1]</td>
         <td>$row[2]</td></tr>";
      }
      echo "</table>";
      $r->free();
      $db->disconnect();
?>

该例子包含常见的数据库使用过程:和数据库建立连接、错误检查、提交查询、析取结果、断开连接:
第一步:和数据库建立连接:
$db=DB::connect($dsn);
$dsn参数标明了我们需要使用的数据库类型、已经连接数据库所需要的地址、用户名、
密码等。$dsn的具体定义如下:
DSN:  phptype(dbsyntax)://username:password@protocol+hostspec/database?option=value

 1:phptype: 后台数据库类型 (比如: mysql , odbc 等.)
 可取如下值:

取值   对应的后台数据库类型
 dbase  dBase
 fbsql  FrontBase
 ibase  InterBase
 ifx  Informix
 msql  Mini SQL
 mssql Microsoft SQL Server
 mysql  MySQL (for servers running MySQL <= 4.0)
 mysqli  MySQL (for servers running MySQL >= 4.1)
 oci8  Oracle 7/8/9
 odbc  ODBC (Open Database Connectivity)
 pgsql   PostgreSQL
 sqlite  SQLite
 sybase  Syb
ase


 2:dbsyntax: 当使用odbc作为phptype时候,设置该DBMS类型,以决定所使用的ODBC驱动.
 比如: access, db2, mssql, navision, solid, 等. 

 3:username: 登录数据库服务器的用户名
 4:password: 对应的密码 
 5:protocol: 使用的通讯协议 ( 常见的是tcp和unix.) 
 6:hostspec: 主机以hostname[:port]表示
 7:database: 数据库服务器上要用的数据库
 8:proto_opts: 协议选项
当成功建立连接后,DB::connect(#dsn)会返回一个DB_Common对象,对象包含了所有的数据库查询方法。使用DB_Common
对象的方法可以方便的对数据库进行查询。
第二步:检查错误:
if(DB::iserror($db))  die($db->getMessage());
当出现错误时,大多数DB类的成员函数(包括后面的查询)都会返回DB_Error对象,如果包含该对象,则表示出错,要检查该对象是否
存在可以使用DB::isError($db_common)(检查数据库通用对象是否出错)或者DB::isError($db_result)(检查查询结果是否出错
).同时DB_Error类还提供其他一些成员函数来获取错误消息:

 成员函数名称  函数说明
 getMessage()  The text messages returned by DB_Error::getMessage() are consistent between each DBMS.
 getCode()  The error code integers returned by DB_Error::getCode() are also consistent between
each DBMS.The integers returned are based on the DB_ERROR_* constants defined in
DB.php.
 getDebugInfo()   DB_Error::getUserInfo() return complete native DBMS error reports.

                                               
第三步:向数据库发送查询:
$sql="select username ,title,dateline
           from article ";
      $r=$db->query($sql);

DB_Common的query($sql)方法来返回一个DB_Result 对象,使用DB_Result的一些方法来对查询结果进行数据析取。

第四步:从查询返回的结果集中析取数据:
echo "<table>";
      while($r->fetchInto($row))
      {
         echo "<tr><td>$row[0]</td><td>$row[1]</td>
         <td>$row[2]</td></tr>";
      }
      echo "</table>";

如前面所言:fetchInto($row)是DB_Result的一个成员函数,它将结果集中的当前行析取到一个数组中。

第五步:释放结果集对象以及断开连接:

      $r->free();
      $db->disconnect();

当查询结束后,特别是当返回一个包含很多行和列的结果集时
DB_Result会占用很多存储空间,程序结束时需要使用free()来释放所占存储空间。
最后使用DB_Common的disconnect()成员函数断开和数据库的连接。


这样,数据库独立的应用就建立好了,当我们需要进行数据库移植,则可以
简单的改变$dsn中的phptype就可以了,如果将这个$dsn放在一个头文件中,
其他的地方include的话,那么我们只需更改一个phptype,整个应用便实现了数据库平台的移植。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值