Как сделать sqlsrv_query в модели? Как вызвать соединение с базой данных внутри модели?

0

Привет, я использую Codeigniter с MSSQL. Я подключил базу данных и ее работу, и мне нужно использовать строку подключения в контроллере модели. Вот приведенный ниже код, который я дал в файле.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));
 } 

и в модели я пробовал это, но не работал

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

Это файл модели. Как вызвать соединение с базой данных внутри модели Спасибо

Теги:
sql-server
codeigniter
sql-server-2008

2 ответа

1
Лучший ответ

Я смотрю документацию Codeigniter это говорит о том, что при загрузке базы данных это будет что-то вроде... но не уменьшайте меня за попытку !:

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 (), показывающий эту ошибку
  • 0
    Попробуйте $db->query("SELECT * from dbo.LAYER"); вместо $db->sqlsrv_query("SELECT * from dbo.LAYER");
Показать ещё 1 комментарий
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;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню