Я пытаюсь выучить PHP в свободное время и использую интерфейс для внутренней базы данных MS SQL, которую мы получили в качестве проекта быстрого обучения. Я подготовил запрос, но он никогда не возвращает никаких строк. Я подтвердил, что при выполнении запроса, когда пользователь подключения возвращает ожидаемые 26 результатов (через Powershell и SSMS), и может извлекать и отображать последние задания резервного копирования для каждой БД в сценарии php, поэтому права, драйвер и запрос - все исключено. Попытки sqlsrv_fetch($stmt)
или sqlsrv_fetch_array($stmt)
оба возвращают как ложные (как и ожидалось, когда строк нет). Может быть, я пропускаю что-то чрезвычайно простое?
код
$ConnectionInfo = array( "Database"=>"NetworkInfo", "UID"=>$UID, "PWD"=>$PWD);
$conn = sqlsrv_connect( $Instance, $ConnectionInfo);
if( $conn ) {
echo "Connection established to $Instance. <br />";
}
else{
echo "Connection could not be established. <br />";
print_r($ConnectionInfo);
die( print_r( sqlsrv_errors(), true));
}
echo '<br />';
$SQL_String= "USE NetworkInfo
SELECT DISTINCT dbo.site.name AS Site,
dbo.site.colloquial_name AS 'Colloquial Name',
dbo.site.former_name AS 'Former Name',
dbo.hrlocation.location_datis AS 'HR Site',
dbo.site.address AS Address,
dbo.site.city AS City,
dbo.site.state AS State,
dbo.site.zip AS ZIP,
dbo.site.main_line AS 'Main Line',
dbo.site.main_ext AS 'Main Ext'
FROM dbo.site
JOIN dbo.hrlocation ON dbo.site.id = dbo.hrlocation.site_id";
$stmt = sqlsrv_query( $conn, $SQL_String);
echo '<h3>$stmt</h3>';
echo 'Var_dump:';
$dump = var_dump($stmt);
echo '<br />';
if( $stmt === false ) {
echo "Error in statement preparation/execution.\n";
die( print_r( sqlsrv_errors(), true));
}
else {
echo 'Returned type: ' . gettype($stmt) . '<br />';
echo 'Returned rows: True' . sqlsrv_has_rows($stmt) . '<br />';
echo 'Number of rows: ' . sqlsrv_num_rows($stmt) . '<br />';
}
выход
Connection established to server.
$stmt
Var_dump:resource(3) of type (SQL Server Statement)
Returned type: resource
Returned # rows: