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