Почему моя таблица в PHP заполняется атрибутами таблицы вместо полей (с использованием удаленной БД для Asterisk CDR)? - PullRequest
0 голосов
/ 17 апреля 2019

Я создаю интерфейс PHP для таблицы CDR Asterisk, но моя таблица, созданная в PHP, не заполняется должным образом.

Мне удалось успешно сохранить CDR в удаленной базе данных, запущенной XAMPP.

Ниже я прилагаю код SQL - автоматически создается MariaDB Asterisk

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET AUTOCOMMIT = 0; START
TRANSACTION; SET time_zone = "+00:00";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

-

- База данных: cdr_ex


-

- Структура таблицы для таблицы cdr

CREATE TABLE `cdr` (   `calldate` datetime NOT NULL,   `clid`
varchar(80) NOT NULL,   `src` varchar(80) NOT NULL,   `dst`
varchar(80) NOT NULL,   `dcontext` varchar(80) NOT NULL,   `channel`
varchar(80) NOT NULL,   `dstchannel` varchar(80) NOT NULL,   `lastapp`
varchar(80) NOT NULL,   `lastdata` varchar(80) NOT NULL,   `duration`
int(11) NOT NULL,   `billsec` int(11) NOT NULL,   `disposition`
varchar(80) NOT NULL,   `amaflags` int(11) NOT NULL,   `accountcode`
varchar(80) NOT NULL,   `userfield` varchar(80) NOT NULL,   `uniqueid`
varchar(32) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-

- Данные сброса для таблицы cdr

INSERT INTO `cdr` (`calldate`, `clid`, `src`, `dst`, `dcontext`,
`channel`, `dstchannel`, `lastapp`, `lastdata`, `duration`, `billsec`,
`disposition`, `amaflags`, `accountcode`, `userfield`, `uniqueid`)
VALUES ('2019-04-16 09:43:29', '\"t1\" <110>', '110', 's',
'from-sip-external', 'SIP/XXX.XXX.X.XXX-00000000', '', 'Playback',
'ss-noservice', 7, 6, 'ANSWERED', 3, '', '', 'XXXXXXXXXX.0');

-

- индексы для дамп-таблиц

- - индексы для таблицы cdr

-- ALTER TABLE `cdr`   ADD PRIMARY KEY (`uniqueid`); COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

И это моеКод PHP:

<body>

  <h1>CDR</h1> <!-- heading -->

  <div class="mainBody">

  <?php

    $query="SELECT 'calldate','dst','lastapp', 'duration', 'billsec', 'disposition' FROM cdr";
    $cdr = mysqli_query($db,$query);
    if(mysqli_num_rows($cdr)>0) //if exist print the table consisting of the all the fields from cdr table
    {
      echo "<table border='1'>
          <tr>
            <th>Call Date</th>
            <th>Destination</th>
            <th>Connection type</th>
            <th>Duration</th>
            <th>Billed time</th>
            <th>Status</th>
          </tr>";
        while($row=mysqli_fetch_array($cdr))
        {
          echo "<tr>";
          echo "<td><div name='cdate'>" . $row['calldate'] . "</div></td>";
          echo "<td><div name='destination'>" . $row['dst'] . "</div></td>";
          echo "<td><div name='ctype'>" . $row['lastapp'] . "</div></td>";
          echo "<td><div name='cduration'>" . $row['duration'] . "</div></td>";
          echo "<td><div name='btime'>" . $row['billsec'] . "</div></td>";
          echo "<td><div name='cstatus'>" . $row['disposition'] . "</div></td>";
          echo "</tr>";             
        }
        echo "</table>";
      }
      else
      {
        echo '<p style="color:red">Nothing to display</p>';
      }

      $db->close(); //close the db 
    ?>

</body>

ВЫХОД.Вместо заполнения таблицы фактическим содержимым имена атрибутов таблицы выбираются во всех полях.(Я не могу включить изображение).

Кто-нибудь знает, что я делаю неправильно?Другие таблицы (созданные пользователем) заполняются правильно, поэтому я предполагаю, что таблица Asterisk может быть защищена.

1 Ответ

1 голос
/ 17 апреля 2019

Я не знаю, что вы хотите получить, но в соответствии с документом mysqli_fetch_array возвращает массив с числовыми индексами, а не хэш.

https://www.w3schools.com/php/func_mysqli_fetch_array.asp

...