windows:
/*
* sqlserver 存储过程数据模型
* DB_CONFIG1 统一数据库sqlserver配置
* 由于数据库差异,中文字符必须iconv转换为gbk格式
*/
class SqlsrvprocModel{
public $conn=null;
public function __construct(){
$this->sqlConnect();
}
public function sqlConnect(){
$host=C("DB_CONFIG1.DB_HOST").(C('DB_CONFIG1.DB_PORT')?",{C('DB_CONFIG1.DB_PORT')}":''); $connectInfo=array('Database'=>C('DB_CONFIG1.DB_NAME'),'UID'=>C('DB_CONFIG1.DB_USER'),
'PWD'=>C('DB_CONFIG1.DB_PWD'),'CharacterSet' => C('DB_CONFIG1.DB_CHARSET'));
$this->conn = sqlsrv_connect(C("DB_CONFIG1.DB_HOST"), $connectInfo);
if( $this->conn === false ){
$_SESSION["apilog"]["sqlser_status"]="sqlser链接失败";
$_SESSION["apilog"]["eDate"]=date("Y-m-j H:i:s");
//日志追踪
optAPILog();
echo "Could not connect.\n";
die( print_r( sqlsrv_errors(), true));
}
$_SESSION["apilog"]["sqlser_status"]="sqlser链接成功";
return $this->conn;
}
/*
* 执行存储过程处理
* 返回一行结果
* 当前框架底层库驱动Sqlsrv.class.php不支持调用存储过程
*/
public function procQuery($spname,$data=array()){
try{
$params=$this->getParams($data);
$stmt = sqlsrv_query( $this->conn, "{$spname} {$params}");
$row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC);
}catch (Exception $e) {
print $e->getMessage();
exit();
}
return $row;
}
/*
* 执行存储过程处理
* 返回所有行结果
* 当前框架底层库驱动Sqlsrv.class.php不支持调用存储过程
*/
public function fetchAll($spname,$data=array()){
try{
$params=$this->getParams($data);
$stmt = sqlsrv_query( $this->conn, "{$spname} {$params}");
$arr = array();
while($row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC)){
$arr[] = $row;
}
}catch (Exception $e) {
print $e->getMessage();
exit();
}
return $arr;
}
//获取存储过程参数
public function getParams($data){
$params="";
$seg=",";//参数分割符
foreach ($data as $key=>$value){
if(($key+1)===count($data)) $seg="";
if(!is_string($value))
$params.=$value.$seg;
else{
$params.="'".$value."'".$seg;
}
}
//sqlserver接受数据要转换成gbk。
//$params=iconv('utf-8', 'gbk', $params);
return $params;
}
}
==============================================
==============================================
Linux
/*
* sqlserver 存储过程数据模型
* DB_CONFIG1 统一数据库sqlserver配置
* 由于数据库差异,中文字符必须iconv转换为gbk格式
*/
class SqlsrvprocModel{
public $conn=null;
public function __construct(){
$this->sqlConnect();
}
public function sqlConnect(){
// $host = C("DB_CONFIG1.DB_HOST").(C('DB_CONFIG1.DB_PORT')?",{C('DB_CONFIG1.DB_PORT')}":'');
//$connectInfo=array('Database'=>C('DB_CONFIG1.DB_NAME'),'UID'=>C('DB_CONFIG1.DB_USER'),
'PWD'=>C('DB_CONFIG1.DB_PWD'),'CharacterSet' => C('DB_CONFIG1.DB_CHARSET'));
// $this->conn = mssql_connect(C("DB_CONFIG1.DB_HOST"), $connectInfo);
$this->conn = mssql_connect(C("DB_CONFIG1.DB_HOST"),
C('DB_CONFIG1.DB_USER'),C('DB_CONFIG1.DB_PWD'));
if($this->conn === false){
$_SESSION["apilog"]["sqlser_status"]="sqlser链接失败";
$_SESSION["apilog"]["eDate"]=date("Y-m-j H:i:s");
//日志追踪
optAPILog();
echo "Could not connect.\n";
die( print_r( mssql_min_error_severity(), true));
}
$_SESSION["apilog"]["sqlser_status"]="sqlser链接成功";
mssql_select_db(C('DB_CONFIG1.DB_NAME'),$this->conn);
return $this->conn;
}
/*
* 执行存储过程处理
* 返回一行结果
* 当前框架底层库驱动Sqlsrv.class.php不支持调用存储过程
*/
public function procQuery($spname,$data=array()){
try{
$params=$this->getParams($data);
$stmt = mssql_query("{$spname} {$params}",$this->conn);
$row = mssql_fetch_array($stmt);
}catch (Exception $e) {
print $e->getMessage();
exit();
}
return $row;
}
/*
* 执行存储过程处理
* 返回所有行结果
* 当前框架底层库驱动Sqlsrv.class.php不支持调用存储过程
*/
public function fetchAll($spname,$data=array()){
try{
$params=$this->getParams($data);
$stmt = mssql_query("{$spname} {$params}",$this->conn);
$arr = array();
while($row = mssql_fetch_array($stmt)){
$arr[] = $row;
}
return $arr;
}catch(Exception $e) {
print $e->getMessage();
exit();
}
}
/**
* 获取存储过程参数
*/
public function getParams($data){
$params="";
$seg=",";//参数分割符
foreach ($data as $key=>$value){
if(($key+1)==count($data))$seg="";
if(!is_string($value))
$params.=$value.$seg;
else{
$params.="'".$value."'".$seg;
}
}
return $params;
}
}