两个 MySQL 命令(SELECT 以查看),但只有一个显示输出

TWO MySQL commands (SELECT to View), but only one is showing output

我有一个 table 和每个,我想 select 来自我数据库中相同 table 的数据。

例如,第一个 <td> 是名字,第二个 <td> 是 phone 号码。

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

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

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

  $conn = OpenCon();
?>

这是 table 的 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>

这是 php 代码 db_connect.php :

<?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) |

你是运行同一个查询多次,无缘无故覆盖了$result变量,$sql对于后面的2次获取没有用,没有使用它们,并且获取了一个$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>

但坦率地说,在没有结果的情况下打印一个空的 table 对我来说毫无意义。所以你需要的可能是这样的。

<?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; ?>