php 链接sqlserver 包含windows 与 linux
2017-12-11 作者  Winter    PHP/MYSQL    阅读量831    评论量0


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;
}
}



上一篇:php实现多进程
下一篇:mysql case when then else end

0条评论
热门文章
热评文章
精品课程

¥小额赞助

联系我们

邮箱:chennengit@163.com

手机:13455295173(微信)

QQ:376926761