2014-11-06 14 views
0

您好我使用MSSQL的Codeigniter我已連接數據庫及其工作,我需要在模型控制器中使用連接字符串。這是下面的代碼,我在數據庫中給出的PHP文件如何在模型中執行sqlsrv_query?如何調用模型內的數據庫連接?

用於測試目的,我在這個文件中給出的查詢本身及其工作

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

和模式,我試過,但它不工作

class welcome_m extends CI_Model{ 

    function __construct() 
    {  
     parent::__construct(); 
     $this->load->database('default',true);   
    } 
    function welcome_check() 
    { 
     $sql="SELECT * from dbo.LAYER"; 
     $stmt = $this->db->sqlsrv_query($sql); 
    while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) 
     { 
     $result_array[] = $row; 
     } 
     print("<pre>"); 
     print_r($result_array); 
     exit; 
    } 

這是模型文件。如何調用內部模型 謝謝

+0

添加它到'welcome_check($康恩)'。 – Rasclatt 2014-11-06 05:44:13

+0

如何添加此功能是從控制器調用知道 – Athi 2014-11-06 05:49:10

+0

我只是拋出的想法,說實話,我不知道。爲什麼你不能在這個類中創建連接,因爲你正在擴展它呢?如果你在你的其他部分工作,爲什麼你不能把這些代碼放到'welcome_check'中? – Rasclatt 2014-11-06 05:53:40

回答

1

數據庫連接我在看的Codeigniter文檔,它說這個加載它會像一個數據庫時... ...但不要downvote我要努力!:

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

調用未定義的方法CI_DB_sqlsrv_driver :: sqlsrv_query()它顯示此錯誤 – Athi 2014-11-06 07:45:43

+0

嘗試'$ db-> query(「SELECT * from dbo.LAYER」);'而不是'$ db-> sqlsrv_query(「SELECT * from dbo。 LAYER「);' – Rasclatt 2014-11-06 07:49:38

+0

非常感謝你的工作 – Athi 2014-11-06 08:35:24

0

很多亂搞我是能夠連接SQL Server在我的代碼(模型)後,下面是我的數據庫文件,並在模型中的樣本函數:

我把一個樣本函數從我型號:

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; 
相關問題