Php 如何在模型中进行sqlsrv_查询?如何在模型内调用数据库连接?

Php 如何在模型中进行sqlsrv_查询?如何在模型内调用数据库连接?,php,sql-server,sql-server-2008,codeigniter,Php,Sql Server,Sql Server 2008,Codeigniter,嗨,我使用带有MSSQL的Codeigniter,我已经连接了数据库及其工作,我需要在模型控制器中使用连接字符串。下面是我在database.php文件中给出的代码 出于测试目的,我在这个文件中给出了一个查询,它正在工作 $db['default']['hostname'] = "Admin\SQLEXPRESS"; // or put the IP of your SQL Server Instance $db['default']['port'] = 1433; // or the port

嗨,我使用带有MSSQL的Codeigniter,我已经连接了数据库及其工作,我需要在模型控制器中使用连接字符串。下面是我在database.php文件中给出的代码

出于测试目的,我在这个文件中给出了一个查询,它正在工作

$db['default']['hostname'] = "Admin\SQLEXPRESS"; // or put the IP of your SQL Server Instance
$db['default']['port'] = 1433; // or the port you configured on step 6
$db['default']['username'] = '';
$db['default']['password'] = '';
$db['default']['database'] = 'db_name';
$db['default']['dbdriver'] = 'sqlsrv';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE; // Pay attention to this, codeigniter makes true for default
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

$serverName = $db['default']['hostname']; //serverName\instanceName

 // Since UID and PWD are not specified in the $connectionInfo array,
 // The connection will be attempted using Windows Authentication.
 $connectionInfo = array( 'Database' => $db['default']['database']);
 $conn = sqlsrv_connect( $serverName, $connectionInfo );

 if ($conn)
 {
      $sql="SELECT * from dbo.LAYER";
      $stmt = sqlsrv_query($conn,$sql);

     while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) 
      {
      $result_array[] = $row;
      }
      print("<pre>");
      print_r($result_array);
      exit;   


 }
 else 
{
  echo "Connection could not be established.<br />";
  die ( print_r( sqlsrv_errors(), true));
 } 
$db['default']['hostname']=“Admin\SQLEXPRESS”//或者将SQL Server实例的IP
$db['default']['port']=1433;//或者您在步骤6中配置的端口
$db['default']['username']='';
$db['default']['password']='';
$db['default']['database']='db_name';
$db['default']['dbdriver']='sqlsrv';
$db['default']['dbprefix']='';
$db['default']['pconnect']=FALSE;//请注意这一点,codeigniter默认为true
$db['default']['db_debug']=TRUE;
$db['default']['cache_on']=FALSE;
$db['default']['cachedir']='';
$db['default']['char_set']='utf8';
$db['default']['dbcollat']='utf8\u general\u ci';
$db['default']['swap_pre']='';
$db['default']['autoinit']=TRUE;
$db['default']['stricon']=FALSE;
$serverName=$db['default']['hostname']//服务器名\实例名
//由于$connectionInfo数组中未指定UID和PWD,
//将使用Windows身份验证尝试连接。
$connectionInfo=array('Database'=>$db['default']['Database']);
$conn=sqlsrv_connect($serverName,$connectionInfo);
如果($conn)
{
$sql=“从dbo.LAYER中选择*”;
$stmt=sqlsrv_查询($conn,$sql);
而($row=sqlsrv\u fetch\u数组($stmt,sqlsrv\u fetch\u ASSOC))
{
$result_array[]=$row;
}
打印(“”);
打印(结果数组);
出口
}
其他的
{
echo“无法建立连接。
”; 模具(打印错误(sqlsrv_errors(),true)); }
在模型中,我试过这个,但不起作用

protected $MyMSSQL;

function __construct()
    {       
        parent::__construct();
        $this->MyMSSQL = $this->load->database('default',true);           
    }

function welcome_check()
    {
        $db    =    $this->MyMSSQL;
        $stmt  =    $db->query("SELECT * from dbo.LAYER");
        while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
                $result_array[] = $row;
            }

        print("<pre>");
        print_r($result_array);
        exit;
    }
class welcome\u m扩展了CI\u模型{
函数_u构造()
{       
父项::_构造();
$this->load->database('default',true);
}
函数欢迎检查()
{
$sql=“从dbo.LAYER中选择*”;
$stmt=$this->db->sqlsrv\u查询($sql);
而($row=sqlsrv\u fetch\u数组($stmt,sqlsrv\u fetch\u ASSOC))
{
$result_array[]=$row;
}
打印(“”);
打印(结果数组);
出口
}
这是模型文件。如何在模型内调用数据库连接
谢谢你

我正在看
Codeigniter
文档,它在加载数据库时会这样说……但不要因为我的尝试而否决我!:

$db['test']['hostname'] = "192.168.12.123";
$db['test']['username'] = "sa";
$db['test']['password'] = "password";
$db['test']['database'] = "Hospital";
$db['test']['dbdriver'] = "sqlsrv";
$db['test']['dbprefix'] = "";
$db['test']['pconnect'] = FALSE;
$db['test']['db_debug'] = FALSE;
$db['test']['cache_on'] = FALSE;
$db['test']['cachedir'] = "";
$db['test']['char_set'] = "utf8";
$db['test']['dbcollat'] = "utf8_general_ci";
$db['test']['swap_pre'] = "";
$db['test']['autoinit'] = TRUE;
$db['test']['stricton'] = FALSE;
受保护的$MyMSSQL;
函数_u构造()
{       
父项::_构造();
$this->MyMSSQL=$this->load->database('default',true);
}
函数欢迎检查()
{
$db=$this->MyMSSQL;
$stmt=$db->query(“从dbo.LAYER中选择*);
而($row=sqlsrv\u fetch\u数组($stmt,sqlsrv\u fetch\u ASSOC)){
$result_array[]=$row;
}
打印(“”);
打印(结果数组);
出口
}

经过一番周折之后,我能够在我的代码(模型)中连接SQL Server,下面是我的数据库文件和模型中的示例函数:

我正在从我的模型中放入一个示例函数:

数据库文件


将其添加到
欢迎检查($conn)
。我如何添加这个函数是从控制器调用的。我只是在抛出一些想法,老实说,我真的不知道。既然你正在扩展它,为什么你不能在该类内部创建连接呢?如果你在其他部分有工作,为什么你不能将该代码放到
欢迎检查
?Beca使用我正在使用codeigniterI可以在welcome_check函数中进行连接,但对于所有函数,我必须反复进行相同的连接,这就是问题调用未定义的方法CI_DB_sqlsrv_driver::sqlsrv_query()显示此错误尝试
$DB->query(“SELECT*from dbo.LAYER”);
而不是
$DB->sqlsrv_query(“从dbo.LAYER中选择*”;
public function getCommandFields($name)
    {
        // Load Sql Server Connection

        $this->sqlsrvr = $this->load->database('test', true);

        $qry ="select  SPECIFIC_NAME, ORDINAL_POSITION, PARAMETER_NAME, DATA_TYPE, 
        CHARACTER_MAXIMUM_LENGTH,PARAMETER_MODE 
FROM INFORMATION_SCHEMA.Parameters
WHERE SPECIFIC_NAME  ='".$name."'";


         $query = $this->sqlsrvr->query($qry);
         $fields = array();
         foreach ($query->result_array() as $row)
        {
            $fields[]=  $row;
        }

        return $fields;

    }
$db['test']['hostname'] = "192.168.12.123";
$db['test']['username'] = "sa";
$db['test']['password'] = "password";
$db['test']['database'] = "Hospital";
$db['test']['dbdriver'] = "sqlsrv";
$db['test']['dbprefix'] = "";
$db['test']['pconnect'] = FALSE;
$db['test']['db_debug'] = FALSE;
$db['test']['cache_on'] = FALSE;
$db['test']['cachedir'] = "";
$db['test']['char_set'] = "utf8";
$db['test']['dbcollat'] = "utf8_general_ci";
$db['test']['swap_pre'] = "";
$db['test']['autoinit'] = TRUE;
$db['test']['stricton'] = FALSE;