当前位置: 澳门新濠3559 > 编程 > 正文

PHP如何透过ODBC来存取数据库_php基础_脚本之家

时间:2019-11-22 20:51来源:编程
运用的条件 先创设两个测量检验用的数据库 接着塑造二个ODBC连结再建个测量试验用的PHP Script 我们来测验吧使用的条件本文件注重是在Win32的遇到下作注解, 您需求的是台跑Windows9x/NT

运用的条件 先创设两个测量检验用的数据库 接着塑造二个ODBC连结 再建个测量试验用的PHP Script 我们来测验吧 使用的条件本文件注重是在Win32的遇到下作注解, 您需求的是台跑Windows 9x/NT/2003的Computer, 并装有任何生机勃勃种web server和PHP3或PHP4, 且可科学推行PHP Script. 并有大器晚成种以上的SQL数据库软件, 例如:Access...本文件以MS-Access数据库来作表达, 别的种的数据库端, 皆能够临近的不二诀要来作ODBC连结.先成立叁个测量试验用的数据库步向MS-Access, 创立四个odbctest.mdb的档案. 开头另立门户一个数码表. 此数据表大家给它多少个字段: id 和 name. 将此资料表命名叫 Class . 接着我们输入一些数据.举例: 接着创立叁个ODBC连结开启 调整台 里的 "ODBC 数据出自" . 接受 "系统数据来源名称" 页. 点选 "新扩张..." 开关. 选拔你想利用的 ODBC 驱动程序. 在那请接收 "Microsoft Access Driver", 当然若你使用任何种的数码库端, 就筛选该数据库的ODBC Driver.点选 "完毕" 开关.接着会并发那个窗口, 来作进一层的设定. 输入数据来自名叫 "WebDB" . 描述的有的能够随意输入, 自身询问就足以了. 按 "选用..." 钮, 输入您欲连结的数据库档案地点. 举例: 这里的 c:odbctest.mdb 接着再点选 "进级..." 钮. 会现身那些画面: 您须要输入的局地是 : 登录名称和密码, 在此大家先分别设成 'webuser' 和 'webpassword'.OK了. ODBC的设定部分已经达成了.再建个测量检验用的PHP Script 以下是个测验用的PHP Script内容, 请将它save起来, 比方存到您web server的文件根目录. function Error_Handler{echo "$msg n";// 为幸免占用连结, 在前后相继甘休前close掉是很关键的.odbc_close;}// 创立一个 ODBC 连结, 传回至 $cnx$cnx = odbc_connect( 'WebDB' , 'webuser', 'webpassword' );//在测量试验时若有权力上难题, 可能你能够动用 superadmin 来存取 ://$cnx = odbc_connect( 'WebDB' , [sa login] , [sa password] );if {Error_handler( "在 odbc_connect 有不当发生" , $cnx );}// 送出一个简易的 odbc query . 传回贰个 odbc 目的$cur= odbc_exec( $cnx, "select id,name from Class" );if {Error_handler( "在 odbc_exec 有荒唐爆发 " , $cnx );}echo "

复制代码 代码如下: ".mysql_error;//确诊连接错误 } $db_selecct=mysql_select_db;//选拔数据库 if { die("could not to the database".mysql_error; } $query="select * from msu ";//创设查询语句 $result=mysql_query;//推行查询 if { die("could not to the database".mysql_error; } // array mysql_fetch_row; while($result_row=mysql_fetch_row//抽出结果并显示 { $num=$result_row[0]; $age=$result_row[1]; $name=$result_row[2]; echo "

1. 创立和关闭连接 1) mysql_connect() resource mysql_connect([string hostname [:port][:/path/to/socket][,string username] [,string password]]) 全数参数都是可选的 比如: @mysql_connect(“localhost”, “user”, “password”) or die(“Could not connect to mysql server!”); 注意,@符号表示防止失利尝试招致的其余错误消息,顾客将见到的是die()中钦赐的失实新闻. 注意,当与多个mysql进行连接时,必需内定每种连接的链接ID,如下: $link1 = @mysql_connect(“server1″, “user”, “password”) or die(“Could not connect to mysql server!”); $link2 = @mysql_connect(“server2″, “user”, “password”) or die(“Could not connect to mysql server!”); 2) mysql_pconnect() resource mysql_pconnect([string hostname [:port][:/path/to/socket][,string username] [,string password]]) 与mysql_connect()分裂的是:会首先查找现成链接,不设不常才创造. 注意,不需求出示关闭连接,因为三番两次将放在池中,所以叫长久连接. 3) mysql_close() boolean mysql_close 关闭连接不是必需的,因为能够由mysql的杂质回笼来管理. 若无钦命link_id,则关闭近些日子的链接. 2. 增选数据库 mysql_select_db() boolean mysql_select_db(string db_name [, resource link_id]) 3. 查询MySql 1) mysql_query() resource mysql_query(string query [,resource link_id]) 担当执行query. 2) mysql_db_query() resource mysql_db_query(string database, string query [, resource link_id]) 等价于mysql_select_db,从参数中就足以清楚的看出来. 4. 到手和浮现数据 1) mysql_result() mixed mysql_result(resource result_set, int row [,mixed field]) 从result_set 的钦命row 中赢得一个田野同志 的数据. 轻便然而作用低. 比如: 复制代码 代码如下: $link1 = @mysql_connect(“server1″, “webuser”, “password”) or die(“Could not connect to mysql server!”); @mysql_select_db or die(“Could not select database!”); $query = “select id, name from product order by name”; $result = mysql_query; $id = mysql_result; $name = mysql_result; mysql_close(); 注意,上述代码只是出口结果聚焦的第一条数据的字段值,假诺要出口全体记录,必要循环管理. 复制代码 代码如下: … for ($i = 0; $i <= mysql_num_rows { $id = mysql_result; $name = mysql_result; echo “Product: $name ”; } … 注意,假诺查询字段名是外号,则mysql_result中就使用别名. 2) mysql_fetch_row() array mysql_fetch_row 从result_set中得到整行,把数量放入数组中. 比方: 复制代码 代码如下: … $query = “select id, name from product order by name”; $result = mysql_query; while = mysql_fetch_row { echo “Product: $name mysql_fetch_array() array mysql_fetch_array(resource result_set [,int result_type]) mysql_fetch_row()的滋长版. 将result_set的每生龙活虎行获取为叁个关全面组或/和数值索引数组. 默许获取三种数组,result_type能够安装: MYSQL_ASSOC:再次回到关联数组,字段名=>字段值 MYSQL_NUM:重返数值索引数组. MYSQL_BOTH:获取两种数组.因而各样字段能够按索引偏移援用,也足以按字段名援引. 比如: 复制代码 代码如下: … $query = “select id, name from product order by name”; $result = mysql_query; while($row = mysql_fetch_array { $name = $row['name'];//或者 $name = $row[1]; $name = $row['id'];//或者 $name = $row[0]; echo “Product: $name mysql_fetch_assoc() array mysql_fetch_assoc 相当于 mysql_fetch_array 5) mysql_fetch_object() object mysql_fetch_object 和mysql_fetch_array()作用近似,可是再次回到的不是数组,而是多少个对象. 比方: 复制代码 代码如下: … $query = “select id, name from product order by name”; $result = mysql_query; while($row = mysql_fetch_object { $name = $row->name; $name = $row->id; echo “Product: $name ”; } … 5. 所选拔的记录和受影响的笔录 1) mysql_num_rows() int mysql_num_rows 返回result_set中的行数. 注意,mysql_num_rows()只在规定select语句询问获得的记录数有效,假若要获取insert/updata/delete查询影响的记录数,供给使用mysql_affected_rows mysql_affected_rows() int mysql_affected_rows 获取insert/updata/delete查询影响的记录数 注意,无需输入参数,暗中认可使用以来创造的数据库连接的近年结果.能够利用可选参数link_id来选择数据库连接. 6. 拿走数据库和表的消息 1) mysql_list_dbs() resource mysql_list_dbs 获取服务器上保有数据库名称. 比方: 复制代码 代码如下: mysql_connect(“localhost”, “name”,”pwd”); $dbs = mysql_list_dbs = mysql_fetch_row { echo “$db
”; } 注意,输出结果与利用的顾客权限相关. 2) mysql_db_name() string mysql_db_name(resource result_set, interger index) 获取在mysql_list_dbs()返回的result_set中地点为index的数据库名. 3) mysql_list_tables() resource mysql_list_tables(string database [,resource link_id]) 获取database中的全体表名. 4) mysql_tablename() string mysql_tablename(resource result_set, interger index) 获取mysql_list_tables()返回的result_set中地点为index的表名. 在学习PHP的COM 和 .Net函数的时候,开掘了四个透过COM操作SQL SE大切诺基VEXC60的事例,查找了有关的材质,于是就有了那篇PHP连接ACCESS的稿子,相信网桐月经重重了,依旧贴在这里地吧。 作者的机械情形:WIN2002,APACHE2,PHP Version 5.1.0RC1 复制代码 代码如下:

<?php
//--------------------------------------------------------------------
//FileName:class.php
//Summary: Access数据库操作类
//CreateTime: 2006-8-10    
//LastModifed:
//copyright (c)2006 freeweb.nyist.net/~chairy  [email]chaizuxue@163.com[/email]
//   使用楷模:
//$databasepath="database.mdb";
//$dbusername="";
//$dbpassword="";
//include_once("class.php");
//$access=new Access($databasepath,$dbusername,$dbpassword);
//--------------------------------------------------------------------
    class Access
    {
         var $databasepath,$constr,$dbusername,$dbpassword,$link;
         function Access($databasepath,$dbusername,$dbpassword)
         {
               $this->databasepath=$databasepath;
        $this->username=$dbusername;
        $this->password=$dbpassword;
        $this->connect();
          }
       
    function connect()
    {
        $this->constr="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath($this->databasepath);
        $this->link=odbc_connect($this->constr,$this->username,$this->password,SQL_CUR_USE_ODBC);
        return $this->link;
        if($this->link) echo "恭喜您,数据库连接成功!";
        else echo "数据库连接退步!";
    }
       
    function query($sql)
    {
        return @odbc_exec($this->link,$sql);
    }
       
    function first_array($sql)
    {
        return odbc_fetch_array($this->query($sql));
    }
       
    function fetch_row($query)
    {
澳门新濠3559,        return odbc_fetch_row($query);
    }
       
    function total_num($sql)//获得记录总的数量
    {
        return odbc_num_rows($this->query($sql));
    }
       
    function close()//关闭数据库连接函数
    {   
        odbc_close($this->link);
    }
           
    function insert($table,$田野(field))//插入记录函数
    {
        $temp=explode(',',$field);
        $ins='';
        for ($i=0;$i<count($temp);$i++)
        {
            $ins.="'".$_POST[$temp[$i]]."',";
        }
        $ins=substr($ins,0,-1);
        $sql="INSERT INTO ".$table." (".$field.") VALUES (".$ins.")";
        $this->query($sql);
    }
       
    function getinfo($table,$田野先生,$id,$colnum)//取妥贴条记录详细消息
    {
        $sql="SELECT * FROM ".$table." WHERE ".$field."=".$id."";
        $query=$this->query($sql);
        if($this->fetch_row($query))
        {
            for ($i=1;$i<$colnum;$i++)
            {
          $info[$i]=odbc_result($query,$i);
             }
         }
         return $info;
    }
       
    function getlist($table,$田野同志,$colnum,$condition,$sort="OENVISIONDE哈弗 BY id DESC")//拿到记录列表   
    {
         $sql="SELECT * FROM ".$table." ".$condition." ".$sort;
         $query=$this->query($sql);
         $i=0;
         while ($this->fetch_row($query))
         {
        $recordlist[$i]=getinfo($table,$field,odbc_result($query,1),$colnum);
        $i++;
          }
          return $recordlist;
    }
       
    function get田野先生list($table,$田野(field),$田野num,$condition="",$sort="")//获得记录列表
    {
         $sql="SELECT ".$field." FROM ".$table." ".$condition." ".$sort;
         $query=$this->query($sql);
         $i=0;
         while ($this->fetch_row($query))
         {
         for ($j=0;$j<$fieldnum;$j++)
        {
                   $info[$j]=@odbc_result($query,$j+1);
        }   
        $rdlist[$i]=$info;
        $i++;
         }
         return $rdlist;
    }
       
    function updateinfo($table,$田野(field),$id,$set)//更新记录
    {
        $sql="UPDATE ".$table." SET ".$set." WHERE ".$field."=".$id;
        $this->query($sql);
    }
       
    function deleteinfo($table,$田野同志,$id)//删除记录
    {
         $sql="DELETE FROM ".$table." WHERE ".$field."=".$id;
         $this->query($sql);
    }
       
    function deleterecord($table,$condition)//删除钦定条件的记录
    {
         $sql="DELETE FROM ".$table." WHERE ".$condition;
         $this->query($sql);
    }
       
    function getcondrecord($table,$condition="")// 获得内定条件的记录数
    {
         $sql="SELECT COUNT(*) AS num FROM ".$table." ".$condition;
         $query=$this->query($sql);
         $this->fetch_row($query);
         $num=odbc_result($query,1);
         return $num;           
    }
     }
?>  

座号

"; echo "

Open(“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\php5\netBook.mdb”); $rs = $conn->Execute(“select * from manage”); // 记录集 $num_columns = $rs->Fields->Count(); echo $num_columns . “
n”; for ($i=0; $i < $num_columns; $i++) { $fld[$i] = $rs->Fields; } $rowcount = 0; while { for ($i=0; $i < $num_columns; $i++) { echo htmlspecialchars . “t”; } echo “
n”; $rowcount++; // rowcount 自增 $rs->MoveNext; //关闭数据集 $conn->Close(); ?>

姓名

$num

n";$num_row=0;// 抽取成功传回的数据while( odbc_fetch_row{$num_row++;// 抓取 "id" 字段的数码$id= odbc_result;// 抓取 "name"字段的多少$name= odbc_result;echo "

"; echo "

$id

$age

$name

"; echo "

n";}echo "

$name

共 $num_row 人

"; echo "

";odbc_close;?> 大家来测量检验呢从你的网页浏览器, 开启浏览这几个测量试验用的PHP Script.假诺一切正确正确的话, 您应该能够看看以下的多寡:座号 姓名 1 欧内斯特 2 Norman 3 PHP/Zend RC 4 ODBCCooler 5 小编是五号 6 六号正是自个儿 共 6 人

"; } mysql_close;//关闭连接 ?> 下边是带详细说明的代码复制代码 代码如下:$connect = mysql_connect("127.0.0.1","root","") or die ;//开启链接到mysql $select_db = mysql_select_db;//如若不极度证明连接标示符,则默许上三回张开的链接 //实行SQL语句! $sql = "SELECT * FROM test" $query = mysql_query or die; //三种查询函数array/row不相同 $row1 = mysql_fetch_row; print_r;//只好保留数组中的标号 $row2 = mysql_fetch_array; print_r;//可以保留数组中的标号,和字段名 //循环输出while输出到空位置while{ print_r; } mysql_query; //用于总括查询结果的数量 mysql_num_rows; //传回最终贰次采取INSERT指令的IP mysql_insert_id; //得到数据库名 mysql_tablename; //重临错误新闻 mysql_error(); //关闭链接 mysql_close(); PHP连接mySQL常用函数Mysql可经过三种办法经过PHP与web相连,大器晚成种通过php的Mysql相关函数,另风华正茂种通过php的ODBC相关函数。 相关函数如下: MYSQL函数 mysql_affected_rows: 拿到 MySQL 最终操作影响的列数目。 mysql_close: 关闭 MySQL 伺性格很顽强在荆棘载途或巨大压力面前不屈器连线。 mysql_connect: 开启 MySQL 伺泰山压顶不弯腰器连线。 mysql_create_db: 创设一个MySQL 新资料库。 mysql_data_seek: 移动内部传出目标。 mysql_db_query: 送查询字串 到 MySQL 资料库。 mysql_drop_db: 移除资料库。 mysql_errno: 传回错误消息代码。 mysql_error: 传回错误消息。 mysql_fetch_array: 传回阵列资料。 mysql_fetch_田野: 获得栏位资源信息。 mysql_fetch_lengths: 传回单列各栏资料最大尺寸。 mysql_fetch_object: 传回物件材质。 mysql_fetch_row: 传回单列的各栏位。 mysql_field_name: 传回钦赐栏位的名号。 mysql_field_seek: 设定指标到传回值的某栏位。 mysql_field_table: 得到最近栏位的资料表 名称。 mysql_field_type: 拿到如今栏位的型态。 mysql_field_flags: 得到近日栏位的旗标。 mysql_field_len: 获得前段时间栏位的尺寸。 mysql_free_result: 释放传回占用回忆体。 mysql_insert_id: 传回最终叁遍选取 INSERT 指令的 ID。 mysql_list_田野s: 列出钦赐资料表的栏位 。 mysql_list_dbs: 列出 MySQL 伺性格很顽强在荆棘载途或巨大压力面前不屈器可用的材质库 。 mysql_list_tables: 列出钦定资料库的材料表 。 mysql_num_田野(field)s: 获得传回栏位的数码。 mysql_num_rows: 获得传回列的多寡。 mysql_pconnect: 开启 MySQL 伺服器长时间连线。 mysql_query: 送出三个 query 字串。 mysql_result: 取得查询 的结果。 mysql_select_db: 接收二个资料库。 mysql_tablename: 获得资料表名称。 ODBC函数 使用ODBC函数需安装MYSQL ODBC odbc_autocommit: 开关自动改变作效果用。 odbc_binmode: 设定二进位资料管理格局。 odbc_close: 关闭 ODBC 连结。 odbc_close_all: 关闭全体 ODBC 连结。 odbc_commit: 更动 ODBC 资料库。 odbc_connect: 连结至 ODBC 资料库。 odbc_cursor: 得到游标名。 odbc_do: 执行 SQL 指令。 odbc_exec: 执行 SQL 指令。 odbc_execute: 实践预置 SQL 指令。 odbc_fetch_into: 获得传回的钦定列。 odbc_fetch_row: 得到传回一列。 odbc_field_name: 得到栏位名称。 odbc_field_type: 拿到栏位资料形态。 odbc_field_len: 得到栏位资料长度。 odbc_free_result: 释出流传资料的回忆体。 odbc_longreadlen: 设定传回栏的最大值。 odbc_num_田野(field)s: 拿到栏位数目。 odbc_pconnect: 长时间连结至 ODBC 资料库。 odbc_prepare: 预置 SQL 指令。 odbc_num_rows: 得到传回列数目。 odbc_result: 获得传回资料。 odbc_result_all: 传回 HTML 表格资料。 odbc_rollback: 裁撤当前交易。 odbc_setoption: 调整 ODBC 设定。

编辑:编程 本文来源:PHP如何透过ODBC来存取数据库_php基础_脚本之家

关键词: