PHPのテーブルにフィールドではなくテーブル属性が入力されるのはなぜですか(Asterisk CDRにリモートDBを使用)?

Mal_235

Asterisk CDRテーブルのPHPインターフェイスを作成していますが、PHPで作成されたテーブルが正しく入力されていません。

XAMPPが実行するリモートデータベースにCDRを正常に保存できました。

以下に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 */;

-

-データベース: 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>

出力。テーブルに実際のコンテンツが入力される代わりに、テーブル属性名がすべてのフィールドでフェッチされます。(写真を含めることはできません)。

私が間違っていることについて誰かが手がかりを持っていますか?他のテーブル(ユーザーが作成したもの)は適切に入力されているので、アスタリスクテーブルが保護されている可能性があると思います。

arheops

何を取得したいかわかりませんが、ドキュメントmysqli_fetch_arrayは、ハッシュではなく数値インデックスを使用して配列を返します。

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

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ