php连接access数据库的两种方法,总结如下:
(1)第一种方法:
01 | //读取mdb数据库的值,创建ADO连接 |
02 | $username =1; |
03 | $conn = new com( "ADODB.Connection" ); |
04 | $connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath ( "web.mdb" ); //Access数据库地址 |
05 | $conn ->Open( $connstr ); |
06 | //创建记录集 |
07 | $rs = new com( "ADODB.RecordSet" ); |
08 | $assql = "select * from sail_about where id=" . $username . "" ; |
09 | $rs ->Open( $assql , $conn ,1,1); //打开数据库 |
10 | if (! $rs ->eof){ |
11 | echo "<br><b>" . $rs [ "title" ]. ":</b> " ; |
12 | exit ; |
13 | } else { |
14 | echo "<br>ACCESS查询成功" ; |
15 | } |
16 | //循环读取数据 |
17 | while (! $rs ->eof){ |
18 | echo $rs ->fields[ 'G_date' ]->Value; |
19 | echo '' ; |
20 | $rs ->movenext(); //将记录集指针下移 |
21 | } |
22 | $rs ->close(); //关闭数据库 |
(2)第二种方法:
01 | //用odbc_connect函数连接access数据库 |
02 | $connstr = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" . realpath ( "web.mdb" ); |
03 | $conn =odbc_connect( $connstr , "" , "" ,SQL_CUR_USE_ODBC ); |
04 | $query =odbc_do( $conn , "select * from sail_about" ); |
05 | while (odbc_fetch_row( $query )){ |
06 | for ( $i =0; $i <2; $i ++){ //$i<2 2值是sail_about 表里的值数 |
07 | echo $record [ $i ] = odbc_result( $query , $i +1); |
08 | } |
09 | echo "<br>" ; |
10 | } |
PHP连接Access数据库的类:
001 | /** |
002 | *2007.04byzhaohe |
003 | * |
004 | *php连接access通用类 |
005 | * |
006 | *用法: |
007 | *建立newAccess类=>set_db设置数据路径=>set_login设置连接数据库的用户名和密码 |
008 | *=>通过set_conn设置连接=> |
009 | *{ |
010 | get_result获取查询执行结果;get_result_rows获取查询执行列表,一般是select |
011 | insert_info插入新的记录update_info更新记录 |
012 | } |
013 | */ |
014 |
015 | class Access{ |
016 | /** |
017 | *类变量定义 |
018 | *@param$connmysql连接号 |
019 | *@param$error错误代号 |
020 | *@param$username/$password数据库连接用户名和密码 |
021 | *@paramarray$err_info错误信息 |
022 | * |
023 | *@param$debuginfo调试信息 |
024 | *@param$table当前操作数据表 |
025 | */ |
026 | var $conn ; |
027 | var $error ; |
028 | var $database ; |
029 | var $username = "" ; |
030 | var $password = "" ; |
031 | var $err_info = array ( |
032 | 0=> "没有错误!" , |
033 | 1=> "数据库连接失败!" , |
034 | 2=> "sql执行出错!" |
035 | ); |
036 | var $debuginfo = "" ; |
037 | var $table ; |
038 | |
039 | /** |
040 | *默认构造方法 |
041 | **/ |
042 | function Access( $arr =null){ |
043 | if ( is_array ( $arr )){ |
044 | $this ->set_login( $arr [ 'host' ], $arr [ 'username' ], $arr [ 'password' ]); |
045 | $this ->set_db( $arr [ 'database' ]); |
046 | $this ->set_conn(); |
047 | } |
048 | } |
049 | |
050 | /** |
051 | *设置数据库文件名 |
052 | *@paramstring$dbfile |
053 | * |
054 | *return void |
055 | */ |
056 | function set_db( $dbfile ){ |
057 | $this ->database= $dbfile ; |
058 | } |
059 | |
060 | /** |
061 | *设置连接数据库的用户名和密码 |
062 | *@paramstring$user用户名 |
063 | *@paramstring$pwd密码 |
064 | * |
065 | *@return void |
066 | */ |
067 | function set_login( $user , $pwd ){ |
068 | $this ->username= $user ; |
069 | $this ->password= $pwd ; |
070 | } |
071 | |
072 | /** |
073 | *创建数据库连接 |
074 | *@param |
075 | *return void |
076 | */ |
077 | function set_conn(){ |
078 | if ( $this ->conn=odbc_connect( "DRIVER=MicrosoftAccessDriver(*.mdb);DBQ=" . realpath ( $this ->database), $this ->username, $this ->password,SQL_CUR_USE_ODBC)){ |
079 | $this ->error=0; |
080 | } else { |
081 | $this ->error=1; |
082 | } |
083 | } |
084 | |
085 | /** |
086 | *设置当前操作的数据表 |
087 | *@paramstring$tb |
088 | * |
089 | *@return void |
090 | */ |
091 | function set_table( $tb ){ |
092 | $this ->table= $tb ; |
093 | } |
094 | |
095 | /** |
096 | *返回sql查询结果 |
097 | *@paramstring$sqlsql语句 |
098 | * |
099 | *@return #id |
100 | */ |
101 | function get_result( $sql ){ |
102 | return odbc_do( $this ->conn, $sql ); |
103 | } |
104 | |
105 | /** |
106 | *获取查询的结果 |
107 | *@paramstring$sql |
108 | * |
109 | *@return array结果的二维数组 |
110 | */ |
111 | function get_result_rows( $sql ){ |
112 | $array = array (); |
113 | $result = $this ->get_result( $sql ); |
114 | while ( $row =odbc_fetch_array( $result )){ |
115 | $array []= $row ; |
116 | } |
117 | return $array ; |
118 | } |
119 | /** |
120 | *获取部分查询结果 |
121 | * |
122 | *@paramArray数组 |
123 | *@return Array |
124 | */ |
125 | function get_query_result( $cols , $tb =null, $order =null, $limit =null, $start =0){ |
126 | if ( empty ( $tb )){ |
127 | $tb = $this ->table; |
128 | } else { |
129 | $this ->table= $tb ; |
130 | } |
131 | |
132 | if ( is_array ( $cols )){ |
133 | $col = "[" .implode( '],[' , $cols ). "]" ; |
134 | } else { |
135 | $col = $cols ; |
136 | } |
137 | |
138 | if ( empty ( $limit )){ |
139 | $sql = "select$colfrom$tb" ; |
140 | } else { |
141 | $sql = "selecttop$limit$colfrom$tb" ; |
142 | } |
143 | if (isset( $order )){ |
144 | $sql .= "orderby$order" ; |
145 | } |
146 | return $this ->get_result_rows( $sql ); |
147 | } |
148 | |
149 | /** |
150 | *执行数据库插入操作 |
151 | * |
152 | *@param$arrvalues列表,数组索引为数据表字段 |
153 | *@param$tb操作数据表如果为空则为设置的当前类的操作表 |
154 | */ |
155 | function insert_info( $arr , $tb = "" ){ |
156 | $cols = array_keys ( $arr ); |
157 | $values = array_values ( $arr ); |
158 | if ( empty ( $tb )){ |
159 | $tb = $this ->tb; |
160 | } |
161 | $sql = "insertinto[$tb]([" .implode( "],[" , $cols ). "])values('" .implode( "','" , $values ). "')" ; |
162 | return $this ->get_result( $sql ); |
163 | } |
164 | |
165 | /** |
166 | *执行数据库更新操作 |
167 | * |
168 | *@paramarray$arr要更新的字段值数组索引为表字段名 |
169 | *@paramarray$con条件数组 |
170 | *@paramstring$tb要操作的数据表 |
171 | * |
172 | */ |
173 | function update_info( $arr , $con , $tb = "" ){ |
174 | $cols = array (); |
175 | $conditions = array (); |
176 | if ( empty ( $tb )){ |
177 | $tb = $this ->tb; |
178 | } |
179 | foreach ( $arr as $key => $value ){ |
180 | $cols []= "[$key]='$value'" ; |
181 | } |
182 | foreach ( $con as $key => $value ){ |
183 | //检查数据类型 |
184 | if ( is_int ( $value )|| is_float ( $value )){ |
185 | $conditions []= "[$key]=$value" ; |
186 | } else { |
187 | $conditions []= "[$key]='$value'" ; |
188 | } |
189 | } |
190 | $sql = "update[$tb]set" .implode( "," , $cols ). "where" .implode( "and" , $conditions ); |
191 | return $this ->get_result( $sql ); |
192 | } |
193 | } |