PHP/MSSQL: результат запроса в таблицу

Я пытаюсь вернуть результаты запроса 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 никогда не используется.

user3783243 10.02.2019 18:18

Вы уверены, что соединение установлено? Вы получили какие-либо ошибки? $getResults пуст?

a_e 10.02.2019 18:19

что я должен изменить?

Ivan Pudic 10.02.2019 18:31
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
1 051
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вероятно, вы видите то, что называется «белым экраном смерти». По сути, ваш сценарий сталкивается с некоторой ошибкой при выполнении вашего кода, но отчет об ошибках отключен, поэтому он молча завершается ошибкой.

Попробуйте добавить это в начало скрипта и посмотрите, сможете ли вы увидеть реальную проблему:

ini_set('display_errors', 'On');
ini_set('html_errors', 0);
error_reporting(E_ALL);

Если это не сработает, проверьте более полный ответ здесь или проконсультируйтесь с вашим хостинг-провайдером об их настройках php.ini.

я получаю сообщение об ошибке в строке 40 --> эта строка: foreach ($dbh->query($sql) as $rows){

Ivan Pudic 10.02.2019 18:29

Вам нужно заменить эту строку чем-то вроде while($obj = sqlsrv_fetch_object($getResults)). Но это начинает выходить за рамки вашего первоначального вопроса, проверьте эту ветку stackoverflow.com/q/23131514/10614791, и вы сможете понять это, я думаю. Если у вас по-прежнему возникают проблемы, не стесняйтесь возвращаться с другим вопросом, подробно описывая точную ошибку, которую вы получаете.

Marcell Toth 10.02.2019 18:33
Ответ принят как подходящий

Я думаю, что причиной вашей ошибки является $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>

Другие вопросы по теме