【问题标题】:TWO MySQL commands (SELECT to View), but only one is showing output两个 MySQL 命令(SELECT to View),但只有一个显示输出
【发布时间】:2020-02-10 15:33:42
【问题描述】:

我有一个表,每个表,我想从我的数据库中的同一个表中选择一个数据。

例如,第一个 td> 是名字,然后第二个 td> 是电话号码。

我得到了命令,但只有第一个命令显示输出。

这是我的 php 代码来打开并连接到数据库:

<?php
  include("./inc/db_connect.php");

  $conn = OpenCon();
?>

这是表格的php代码,包括th>和td>:

<div class="layer55">
  <h3>
    <table class="flat-table">
      <tbody>
        <tr>
          <th>
            <?php
              $sql = "SELECT * FROM sharp_emp WHERE employee_id = 'AA170336'";

              if ($result = $conn->query($sql)) {
                if ($result->num_rows > 0) {
                  echo "Name";
                }
              }
            ?>
          </th>

          <th>
            <?php
              $sql = "SELECT * FROM sharp_emp WHERE employee_id = 'AA170336'";

              if ($result = $conn->query($sql)) {
                if ($result->num_rows > 0) {
                  echo "Phone Number";
                }
              }
            ?>
          </th>
        </tr>

        <tr>
          <td>
            <?php
              $sql = "SELECT first_name FROM sharp_emp WHERE employee_id = 'AA170336'";

              while ($row = $result->fetch_array()) {
                echo "" . $row['first_name'] . "";
              }
            ?>
          </td>

          <td>
            <?php
              $sql = "SELECT phone FROM sharp_emp WHERE employee_id = 'AA170336'";

              while ($row = $result->fetch_array()) {
                echo "" . $row['phone'] . "";
              }
            ?>
          </td>
        </tr>
      </tbody>
    </table>
  </h3>
</div>

这是 db_connect.phpphp 代码:

<?php
  function OpenCon()
  {
   $dbhost = "localhost";
   $dbuser = // Hidden;
   $dbpass = // Hidden;
   $db = "sharp_db";
   $conn = new mysqli($dbhost, $dbuser, $dbpass,$db) or die("Connect failed: %s\n". $conn -> error);

   return $conn;
  }

  function CloseCon($conn)
  {
   $conn -> close();
  }
?>

预期输出:

|----------|----------|    
|Name      |Phone Number|    
|----------|----------|    
|John      |179898765 |

当前输出:

|----------|----------|
|Name      |Phone Number|
|----------|----------|
|John      |Null (empty) |

【问题讨论】:

  • 您在两个 -&gt;query() 调用中重复使用变量 $result。所以第二个破坏了第一个创建的结果集:)
  • 为什么要运行相同的查询 4 ​​次?
  • 所以我必须区分那些$result ?也许$result1$result2$result3$result4@RiggsFolly @user3783243
  • 顺便说一句,我说的是 标签,而不是 标签。那些 标签是成功的,但 标签不是。尽管使用相同的命令,“姓名”和“电话号码”仍然显示,但“姓名”仅显示“约翰”,“电话号码”为空,为什么?

标签: php html mysql database command


【解决方案1】:

您多次运行相同的查询,无缘无故地覆盖了$result 变量,没有使用它们的后2 次获取无用的$sql,并且错误地获取了单个$result 两次。

因此,您的代码存在多个概念问题。我认为您当前的代码与此等效:

<div class="layer55">
  <h3>
    <table class="flat-table">
      <tbody>
        <tr>
          <?php
            $sql = "SELECT * FROM sharp_emp WHERE employee_id = 'AA170336'";
            if ($result = $conn->query($sql)) {
              if ($result->num_rows > 0) {
          ?>
                <th>Name</th>
                <th>Phone Number</th>
            <?php } else { ?>
                <th></th>
                <th></th>
            <?php } ?>
          <?php } ?>
        </tr>
        <tr>
          <?php if ($row = $result->fetch_array()) { ?>
            <td><?php echo "" . $row['first_name'] . ""; ?></td>
            <td><?php echo "" . $row['phone'] . ""; ?></td>
          <?php } else { ?>
            <td></td>
            <td></td>
          <?php } ?>
        </tr>
      </tbody>
    </table>
  </h3>
</div>

但坦率地说,当没有结果时打印一个空表对我来说毫无意义。所以你需要的大概是这样的。

<?php

$sql = "SELECT * FROM sharp_emp WHERE employee_id = 'AA170336'";
if (
  ($result = $conn->query($sql))
  && ($result->num_rows > 0)
  && ($row = $result->fetch_array())
):

?>
<div class="layer55">
  <h3>
    <table class="flat-table">
      <tbody>
        <tr>
          <th>Name</th>
          <th>Phone Number</th>
        </tr>
        <tr>
          <td><?php echo $row['first_name']; ?></td>
          <td><?php echo $row['phone']; ?></td>
        </tr>
      </tbody>
    </table>
  </h3>
</div>
<?php endif; ?>

【讨论】:

  • $result1$result2 是相同的。最好只有 1 个结果集。
  • 检查并更改我的答案,坚持xD
  • @hycarlDev_:改变了我的答案。请检查。
  • @KoalaYeung ,你的答案是正确的,已经知道了,但必须更改一个小错误,&amp;&amp; ($row = $result1-&gt;fetch_array()),应该是$result 而不是$result1,但总的来说,问题解决了,谢谢!
猜你喜欢
  • 2017-08-10
  • 1970-01-01
  • 1970-01-01
  • 2017-12-15
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多