【问题标题】:PHP Extracting MYSQL Value IssuePHP 提取 MYSQL 值问题
【发布时间】:2017-11-17 15:42:22
【问题描述】:

我有 2 个表:用户和事务

在我拥有的用户中:用户 ID、姓名、电子邮件

在交易中我有:id、idsender、idreceiver

我想制作一个显示所有交易的日志表,我希望它们显示为:交易 ID - SENDER'S NAME - RECEIVER'S NAME

我试过这样但它似乎不起作用,在“接收器”它没有显示任何东西..:

echo "<table>";
echo "<tr>";
echo "<th>Transaction ID</th>";
echo "<th>Sender</th>";
echo "<th>Receiver</th>";
echo "</tr>";

    $resultuser = mysqli_query($conn, "SELECT * FROM users"); 
    $rowuser=mysqli_fetch_array($resultuser);

    $resulttrans = mysqli_query($conn, "SELECT * FROM transactions"); 
    $rowtrans=mysqli_fetch_array($resulttrans);



    $ress=mysqli_query($conn, "SELECT * FROM transactions");

            while($row=mysqli_fetch_array($ress)){
                echo "<tr>";
                echo "<td>".$row['id']."</td>";
                echo "<td>"." same as receiver"."</td>";
            $receiver=mysqli_query($conn, "SELECT name FROM users WHERE userid='" . $rowtrans['idreceiver'] . "'");
            $receivername = mysqli_fetch_array($receiver);

                echo "<td>". $receivername ."</td>";
                echo "</tr>";
            }

【问题讨论】:

  • documentationmysqli_fetch_array 返回一个数组或空值,而您正试图输出为一个简单的变量。
  • 不要使用两个查询,使用一个连接两个表的查询。
  • 前两个查询的目的是什么?

标签: php logging mysqli html-table


【解决方案1】:

不要使用两个查询。在一个查询中连接两个表:

$ress = mysqli_query("SELECT t.id, u1.name AS sendername, u2.name AS receivername
    FROM transactions AS t
    JOIN users AS u1 ON u1.userid = t.idsender
    JOIN users AS u2 ON u2.userid = t.idreceiver");
while ($row = mysqli_fetch_assoc($ress)) {
    echo "<tr>";
    echo "<td>".$row['id']."</td>";
    echo "<td>" . $row['sendername'] ."</td>";
    echo "<td>" . $row['receivername'] . "</td>";
    echo "</tr>";
}

【讨论】:

    【解决方案2】:

    您正在从 $receivername = mysqli_fetch_array($receiver); 中提取的数组中回显

    你应该这样做echo "&lt;td&gt;". $receivername['name'] ."&lt;/td&gt;";

    注意: 从mysqli_fetch_array() 获取的数组可以使用编号$receivername[0] 或字符串$receivername['name'] 的索引来回显,这就是您在这里缺少的地方。

    【讨论】:

    • 还是不行,$receiver=mysqli_query($conn, "SELECT * FROM users WHERE userid='" . $rowtrans['idreceiver'] . "'"); $receivername = mysqli_fetch_array($receiver); echo "&lt;td&gt;". $receivername ."&lt;/td&gt;";
    • @DizzyTudor 这和你的问题一样,不像答案。
    • @Barmar 对不起,我提到了$receivername['name'],我粘贴错了。我现在已经正确了,但该字段仍然是空白的。
    猜你喜欢
    • 2012-05-28
    • 2012-05-12
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    相关资源
    最近更新 更多