为什么我在 PHP 中的 table 填充了 table 属性而不是字段(为 Asterisk CDR 使用远程数据库)?

Why does my table in PHP get populated with table attributes instead of fields (using remote DB for Asterisk CDR)?

我正在为 Asterisk CDR table 创建 PHP 接口,但是我在 PHP 中创建的 table 没有被正确填充。

我能够成功地将 CDR 保存到远程数据库,运行 XAMPP。

下面附上 SQL 代码 - 由 Asterisk 的 MariaDB

自动创建
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 */;

--

-- Database: cdr_ex


--

-- Table structure for table 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;

--

-- Dumping data for table 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');

--

-- Indexes for dumped tables

-- -- Indexes for table 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>

输出。 table 不是填充实际内容,而是在所有字段中获取 table 属性名称。 (我不能包含图片)。

有人知道我做错了什么吗?其他 tables(用户创建的)正在正确填充,所以我猜测 Asterisk table 可能受到保护。

我不知道你想得到什么,但 acordinly 文档 mysqli_fetch_array return 带有数字索引的数组,而不是散列。

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