php-asp-MSSQL

本文介绍了一个使用 PHP 与 ASP 进行数据库交互的类,该类实现了从指定服务器查询数据的功能,并解析返回的 XML 结果。具体包括获取服务器 IP、发送 SQL 查询、解析返回的数据记录等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php
class php_asp_db{

var $Fields = array();
var $Records = array();
var $Recnum;
var $Fieldcount;

function php_asp_db(){}
function Query($sql){
//取交警服务器IP
$fp = fopen("/www/webroot/TrafficIP.txt", "r");
if (flock($fp, LOCK_SH)) {
$IP = fgets($fp, 20);
$IP = substr($IP,0,strlen($IP)-1);//去除最后一个回车
flock($fp, LOCK_UN);
}
else {//取IP失败
echo "连接服务器失败,请稍后重试";
exit;
}
fclose($fp);
//$sql = str_replace(" ","%20",$sql);
$sql = urlencode($sql);
$handle = fopen ("http://$IP/test.asp?var=$sql", "r");
if ($handle) {
while (!feof($handle)) {
$preTEXT = fgets($handle, 9999);
$TEXT .= $preTEXT;
}
fclose($handle);
}
else{
echo "连接服务器失败,请稍后重试";
exit;
}
//echo $TEXT;
$this->php_xml($TEXT);
}
function php_xml($str){
$m = strpos($str,"<State>");
$n = strpos($str,"</State>");
if($m==0 || $n==0){//发生异常,没有成功
return -1;
}
$m += strlen("<State>");
$State = substr($str,$m,$n-$m);

//取数据格式版本号
$m = strpos($str,"<Version>");
$n = strpos($str,"</Version>");
$m += strlen("<Version>");
$Version = substr($str,$m,$n-$m);
if ($Version > "1.0.0"){
echo "Warning!It maybe can't resolve correctly.";
}
//取数据记录数量
$m = strpos($str,"<Recnum>");
$n = strpos($str,"</Recnum>");
$m += strlen("<Recnum>");
$this->Recnum = substr($str,$m,$n-$m);
//取数据字段数量
$m = strpos($str,"<Fieldcount>");
$n = strpos($str,"</Fieldcount>");
$m += strlen("<Fieldcount>");
$this->Fieldcount = substr($str,$m,$n-$m);

//取字段名称
for($i=0;$i<$this->Fieldcount;$i++){
//echo $n."-";
$m = strpos($str,"<Field>",$n);
$n = strpos($str,"</Field>",$m);
$m += strlen("<Field>");
$this->Fields[$i] = substr($str,$m,$n-$m);
//echo $m.",".$n."<br>";
//echo $this->Fields[$i]."<p>";
}

//取数据
$n = strpos($str,"<Table>",$n);
for($i=0;$i<$this->Recnum;$i++){
$m = strpos($str,"<Record>",$n);
$n = strpos($str,"</Record>",$m);
$m += strlen("<Record>");
$Record = substr($str,$m,$n-$m);
//echo
for($j=0;$j<$this->Fieldcount;$j++){
$x = strpos($Record,"<".$this->Fields[$j].">");
$y = strpos($Record,"</".$this->Fields[$j].">");
$x += strlen("<".$this->Fields[$j].">");
$this->Records[$i][$j] = substr($Record,$x,$y-$x);
$this->Records[$i][$this->Fields[$j]] = substr($Record,$x,$y-$x);
//echo $m.",".$n."<br>";
//echo $this->Records[$i][$j]."<br>";
}
}
}//end function
}
//example
/*
$mssql = new php_asp_db();
//$mssql->Query("select * from v_reg where is_over=1 and reg_id>100000");
//if (!$sql) $sql = "select v_reg.*,VIOLATION_CODE.display from v_reg,VIOLATION_CODE where is_over=1 and reg_id>100000 and STATE_ID='U' and v_reg.v_action=VIOLATION_CODE.code";
if (!$sql) $sql = "select * from TallyRecord where CardNo='370213801123361'";
$mssql->Query($sql);

echo "<table border='1'><tr>";
for($j=0;$j<count($mssql->Fields);$j++){
echo "<th>".$mssql->Fields[$j]."</th>";
}

echo "</tr>";

for($i=0;$i<count($mssql->Records);$i++){
echo "<tr>";
for($j=0;$j<count($mssql->Fields);$j++){
echo "<td>".$mssql->Records[$i][$j]."</td>";
}
echo "</tr>/n";
}
echo "</table>";
*/
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值