php操作Access数据库

php操作Access数据库

 

<?php
/*************************************
* 数据库处理acces
* 创建人: huang_xiang
* 创建时间:2009-10-19 18:49
* 更新时间:2009-10-19 18:49
************************************
*/
function mysql_acess($H_sql){
$H_sqlar = array(); /** 解析出的参数 */
$H_opton_i = strpos($H_sql," ");
$H_sqlar['opton'] = trim(substr($H_sql,0,$H_opton_i));
$H_filed_i = strpos($H_sql,"from");
$H_filed_s = substr($H_sql,$H_opton_i,$H_filed_i-$H_opton_i);
if(strrpos($H_filed_s,",")){
$H_filed_a = array();
$H_filed_t = explode(",",$H_filed_s);
foreach($H_filed_t as $H_val){
$H_filed_m = explode(" as ",$H_val);
if(strrpos($H_val,"as")) $H_filed_a[$H_filed_m[0]] = $H_filed_m[1];
else $H_filed_a[$H_val] = $H_val;
}
}else $H_filed_a = array('*' => '*');
$H_sqlar['filed'] = array($H_filed_s,$H_filed_a);

$H_where_i = strpos($H_sql,"where");
if($H_where_i){
$H_sqlar['wheref'] = true;
$H_sqlar['from'] = substr($H_sql,$H_filed_i,$H_where_i-$H_filed_i);
}else{
$H_sqlar['wheref'] = false;
$H_where_i = $H_filed_i;
}
$H_limit_i = strrpos($H_sql,"limit");
if($H_limit_i){
$H_limit_s = trim(substr($H_sql,$H_limit_i+6,strlen($H_sql)-$H_limit_i));
$H_sql = substr($H_sql,0,$H_limit_i);
if(strrpos($H_limit_s,",")){
$H_explm = explode(",",$H_limit_s);
$H_index = intval($H_explm[0]);
$H_sizes = intval($H_explm[1]);
}else{
$H_index = 0;
$H_sizes = intval($H_limit_s);
}
$H_sqlar['limit'] = array("limit ".$H_limit_s,$H_index,$H_sizes);
}else{
$H_limit_i = strlen($H_sql);
$H_sqlar['limit'] = -1;
}
$H_order_i = strrpos($H_sql,"order by");
if($H_order_i){
$H_sqlar['where'] = substr($H_sql,$H_where_i,$H_order_i-$H_where_i);
$H_sqlar['order'] = substr($H_sql,$H_order_i,$H_limit_i-$H_order_i);
}else{
$H_sqlar['where'] = substr($H_sql,$H_where_i,strlen($H_sql)-$H_where_i);
$H_sqlar['order'] = "";
}
$H_sqlxa = $H_sqlar['opton'].(($H_sqlar['limit'] == -1)?'':(" top ".$H_sqlar['limit'][2])).$H_sqlar['filed'][0].$H_sqlar['from'].$H_sqlar['where'];
$H_sqlxb = $H_sqlar['opton']." count(*) as H_sumss ".$H_sqlar['from'].$H_sqlar['where'];
if($H_sqlar['limit'][1] > 0){
$H_sql = trim($H_sqlxa.($H_sqlar['wheref'] ?' and':' where ')." id >= ".$H_sqlar['limit'][1]." ".$H_sqlar['order']);
}else $H_sql = trim($H_sqlxa.$H_sqlar['order']);
$H_sqln = trim($H_sqlxb);

return array('datas' => $H_sqlar,'sql' => $H_sql,'sqln' => $H_sqln);
}

function conn(){
$H_data_mdbs = 'data.mdb'; /** 数据库文件 */
$H_data_user = 'tx'; /** 用户名 */
$H_data_pass = 'yin273642232'; /** 密码 */
$H_const="DRIVER={Microsoft Access Driver (*.mdb)};DBQ=".realpath($H_data_mdbs).";";
$H_conn=odbc_connect($H_const,$H_data_user,$H_data_pass,SQL_CUR_USE_ODBC); /** 连接数据库 */
return $H_conn;
}

function get_datas($H_conn,$H_sql,$H_sqln,$H_sqlar){
$H_resid = odbc_do($H_conn, $H_sqln); /** 执行sql */
$H_sumss = 0; /** 总记录数 */
$H_sizes = 12; /** 每页条数 */
$H_count = 0; /** 总页数 */
$H_start = $H_sqlar['limit'][1]; /** 开始数 */
$H_stops = $H_sqlar['limit'][2]; /** 结束数 */
while(odbc_fetch_row($H_resid)){ $H_sumss = odbc_result($H_resid,'H_sumss'); break;}
$H_count = $H_sumss < 1 ? 0 : ceil($H_sumss/$H_sizes);
$H_resid = odbc_do($H_conn, $H_sql);
$H_file_len = odbc_num_fields($H_resid);
$H_datas = array();
while(odbc_fetch_row($H_resid)){
$H_dataf = array();
for($H_i =1;$H_i <= $H_file_len;$H_i++){
$H_tname = odbc_field_name($H_resid,$H_i);
$H_tresu = odbc_result($H_resid,$H_i);
$H_dataf[$H_i-1] = $H_tresu;
$H_dataf[$H_tname] = $H_tresu;
}
$H_datas[] = $H_dataf;
}
return $H_datas;
}


$H_conn= conn();
echo '原有SQL: ',$H_sql = "select * from data_basic where basnm like '%k%' order by id limit 6,12";
echo '<br />';
$H_acsql = mysql_acess($H_sql);
echo '记录SQL: ',$H_sql = $H_acsql['sql'];
echo '<br />';
echo '条数SQL: ',$H_sqln = $H_acsql['sqln'];
echo '<br />';
$H_datas = get_datas($H_conn,$H_sql,$H_sqln,$H_sqlar);
odbc_close($H_conn);

echo '<pre>';
print_r($H_datas);
echo '</pre>';
?>

 

 

 

转载于:https://www.cnblogs.com/huangxiang/archive/2012/01/17/2324673.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值