Я пытаюсь вернуть результаты запроса MS SQL в таблицу. Но почему-то я получаю только пустую страницу с заголовками. Я не знаю, что я делаю неправильно или где искать ответ. Может ли кто-нибудь направить меня в правильном направлении.
Помощь приветствуется
<?php
$serverName = "192.168.8.8";
$connectionOptions = array(
"Database" => "GeoDynamics",
"Uid" => "User",
"PWD" => "Password"
);
//Establishes the connection
$dbh = sqlsrv_connect($serverName, $connectionOptions);
$sql = "SELECT * FROM Aanbest WHERE ReceiptLimitDate = '2018-12-03' order by ImportDatum desc";
$getResults= sqlsrv_query($dbh, $sql);
?>
<style type = "text/css">
.tftable {font-size:12px;color:#333333;width:100%;border-width: 1px;border-color: #729ea5;border-collapse: collapse;}
.tftable th {font-size:12px;background-color:#acc8cc;border-width: 1px;padding: 8px;border-style: solid;border-color: #729ea5;text-align:left;}
.tftable tr {background-color:#d4e3e5;}
.tftable td {font-size:12px;border-width: 1px;padding: 8px;border-style: solid;border-color: #729ea5;}
.tftable tr:hover {background-color:#ffffff;}
</style>
<table class = "tftable" border = "1">
<thead>
<tr>
<th>ID</th>
<th>Aanbestedingsdatum</th>
<th>Klasse</th>
<th>Omschrijving</th>
<th>Postcode</th>
<th>Stad</th>
<th>Bestuur</th>
<th>LikedBy?</th>
<th>Like</th>
</tr>
</thead>
<tbody>
<?php
foreach ($dbh->query($sql) as $rows){
?>
<tr>
<td><?php echo $rows['ID']?></td>
<td><?php echo $rows['ReceiptLimitDate']?></td>
<td><?php echo $rows['Classes1']?></td>
<td><?php echo $rows['Title']?></td>
<td><?php echo $rows['AdministrationZip']?></td>
<td><?php echo $rows['AdministrationCity']?></td>
<td><?php echo $rows['AdministrationName']?></td>
<td><?php echo $rows['LikedBy']?></td>
<td><button type = "button" id = "like_btn">Like</button></td>
</tr>
<?php
}
?>
</tbody>
</table>
Вы уверены, что соединение установлено? Вы получили какие-либо ошибки? $getResults пуст?
что я должен изменить?






Вероятно, вы видите то, что называется «белым экраном смерти». По сути, ваш сценарий сталкивается с некоторой ошибкой при выполнении вашего кода, но отчет об ошибках отключен, поэтому он молча завершается ошибкой.
Попробуйте добавить это в начало скрипта и посмотрите, сможете ли вы увидеть реальную проблему:
ini_set('display_errors', 'On');
ini_set('html_errors', 0);
error_reporting(E_ALL);
Если это не сработает, проверьте более полный ответ здесь или проконсультируйтесь с вашим хостинг-провайдером об их настройках php.ini.
я получаю сообщение об ошибке в строке 40 --> эта строка: foreach ($dbh->query($sql) as $rows){
Вам нужно заменить эту строку чем-то вроде while($obj = sqlsrv_fetch_object($getResults)). Но это начинает выходить за рамки вашего первоначального вопроса, проверьте эту ветку stackoverflow.com/q/23131514/10614791, и вы сможете понять это, я думаю. Если у вас по-прежнему возникают проблемы, не стесняйтесь возвращаться с другим вопросом, подробно описывая точную ошибку, которую вы получаете.
Я думаю, что причиной вашей ошибки является $dbh->query($sql). Переменная $dbh содержит результат sqlsrv_connect(), но вы используете ее как переменную PDO class.
Измените свой код следующим образом (включая проверку ошибок):
<?php
$serverName = "192.168.8.8";
$connectionOptions = array(
"Database" => "GeoDynamics",
"Uid" => "User",
"PWD" => "Password"
);
//Establishes the connection
$dbh = sqlsrv_connect($serverName, $connectionOptions);
if ($dbh === false) {
echo "Error (sqlsrv_connect): ".print_r(sqlsrv_errors(), true);
exit;
}
$sql = "SELECT * FROM Aanbest WHERE ReceiptLimitDate = '2018-12-03' order by ImportDatum desc";
$getResults = sqlsrv_query($dbh, $sql);
if ($getResults === false) {
echo "Error (sqlsrv_query): ".print_r(sqlsrv_errors(), true);
exit;
}
?>
<style type = "text/css">
.tftable {font-size:12px;color:#333333;width:100%;border-width: 1px;border-color: #729ea5;border-collapse: collapse;}
.tftable th {font-size:12px;background-color:#acc8cc;border-width: 1px;padding: 8px;border-style: solid;border-color: #729ea5;text-align:left;}
.tftable tr {background-color:#d4e3e5;}
.tftable td {font-size:12px;border-width: 1px;padding: 8px;border-style: solid;border-color: #729ea5;}
.tftable tr:hover {background-color:#ffffff;}
</style>
<table class = "tftable" border = "1">
<thead>
<tr>
<th>ID</th>
<th>Aanbestedingsdatum</th>
<th>Klasse</th>
<th>Omschrijving</th>
<th>Postcode</th>
<th>Stad</th>
<th>Bestuur</th>
<th>LikedBy?</th>
<th>Like</th>
</tr>
</thead>
<tbody>
<?php
while ($rows = sqlsrv_fetch_array($getResults, SQLSRV_FETCH_ASSOC)) {
?>
<tr>
<td><?php echo $rows['ID']?></td>
<td><?php echo $rows['ReceiptLimitDate']?></td>
<td><?php echo $rows['Classes1']?></td>
<td><?php echo $rows['Title']?></td>
<td><?php echo $rows['AdministrationZip']?></td>
<td><?php echo $rows['AdministrationCity']?></td>
<td><?php echo $rows['AdministrationName']?></td>
<td><?php echo $rows['LikedBy']?></td>
<td><button type = "button" id = "like_btn">Like</button></td>
</tr>
<?php
}
?>
</tbody>
</table>
Сначала проверьте результат запроса. Вы также выполняете его дважды.
$getResultsникогда не используется.