Привет. Начал изучать PHP. Что бы как-то практиковаться, решил сделать на работе для себя небольшой портал. Помогите, пожалуйста, разобраться, как корректно организовать коннект и дисконнект к БД ms sql.
Суть в следующем: Нужно написать страничку, типа дашборда. Туда вывожу данные из таблиц на удаленном сервере. Обычно они из разных таблиц, либо много разных условий. То есть на странице есть таблицы, графики и в каждой ячейке цифра из разных таблиц на сервере (count, sum из БД).
Начал делать так:
<td>
$serverName = "xxxxx.xxxxxx.net";
$connectionInfo = array( "Database"=>"xxx", "UID"=>"admin", "PWD"=>"pass", "CharacterSet" => "UTF-8");
$conn = sqlsrv_connect( $serverName, $connectionInfo );
if( $conn === false ) {
die( print_r( sqlsrv_errors(), true));
}
$stmt = sqlsrv_query( $conn, $sqlInClose );
if( $stmt === false) {
die( print_r( sqlsrv_errors(), true) );
}
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC) ) {
$rowResult = $row[0];
}
$stmt = sqlsrv_query( $conn, $sql2Month );
if( $stmt === false) {
die( print_r( sqlsrv_errors(), true) );
}
while( $row1 = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC) ) {
$rowResult1 = $row1[0];
}
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
echo "$rowResult1";
?></td>
</tr>
<tr>
<td>........</td>
<td>...........</td>
</tr>
<tr>
<td>..................</td>
<td>..................</td>
</tr>
<tr>
<td>...................</td>
<td>....................</td>
</tr>
</tbody>
</table>
То есть в каждой ячейке идет коннект к БД, получаю нужные данные дисконнект и так далее. В каждом примерно такой код, только с разным select-ом (тут это $sqlInClose, их вынес в отдельный файл.
Понимаю, что это не нормально. Сейчас уже в одном файле раз 10 идет
$conn = sqlsrv_connect( $serverName, $connectionInfo );
..........
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
А по задумке их должно быть гораздо больше.
Пробовал в самом верху писать
<?
$serverName = "xxxxx.xxxxxx.net";
$connectionInfo = array( "Database"=>"xxx", "UID"=>"admin", "PWD"=>"pass", "CharacterSet" => "UTF-8");
$conn = sqlsrv_connect( $serverName, $connectionInfo );
if( $conn === false ) {
die( print_r( sqlsrv_errors(), true));
}
?>
А в конце
<?
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>
Но так страница вообще не загружается, просто белый экран.
Гуглил тему и понимаю, что к БД нужно коннектиться один раз, получать все данные и закрывать сессию. Наверно должен быть файл, типа connect.php, но не могу разобраться как это сделать правильно.
Заранее спасибо.