Я пытаюсь выполнить запрос к базе данных SQL Server, изучая взаимосвязь «многие ко многим». Я связываю таблицу, из которой я хочу получить строки, с таблицей отношений и вставляю уникальный идентификатор, в данном случае $ guid.
Запрос иногда бывает функциональным. Это сработает, а затем я переключаю только $ guid на другой, и это не удается, хотя я смотрю на таблицу и у нее есть значения, связанные с этим новым $ guid.
<?php
$guid = '{893C7BF8-E8C5-41D5-9C61-A72CF62DDBA8}';
// Connect to Database
$server = "#@#($#";
$connectionSettings = array("Database"=>"db", "UID"=>"user", "PWD"=>"pword");
$connection = sqlsrv_connect($server, $connectionSettings);
if (!$connection){
die("Failed Connection");
}
// Prepare and Execute Query
$sql = "SELECT *
FROM STREAMS.ATTACHMENTS a INNER JOIN STREAMS.RELATTACHMENTS ra
ON a.ROWGUID = ra.ATTACHMENT_GUID
WHERE ra.FEATURE_GUID = '" . $guid . "'";
$results = sqlsrv_query($connection, $sql);
$rowCount = sqlsrv_num_rows( $results );
if ($rowCount === false)
echo "failure";
else
echo $rowCount;
while($row = sqlsrv_fetch_array($results)){
echo "loop";
}
?>
Даже незнакомец, выход к этому коду следующий:
failurelooploop
Таким образом, это означает, что команда sqlsrv_num_rows не учитывает ни одной строки в результате ... но также подразумевает, что один и тот же набор результатов имеет 2 строки, поскольку цикл while обернулся дважды.
Кто-нибудь может объяснить это странное поведение?
Спасибо.