简体   繁体   中英

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

I have a table and each, I want to select a data from the same table in my database.

For example, first < td > is first name, then the second < td > is phone number.

I got the command, but only the first command is showing output.

This is my php codes to open and connect to the database:

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

  $conn = OpenCon();
?>

This is the php codes for the table including < th > and < 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>

This is the php codes for 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();
  }
?>

The expected output:

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

The current output:

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

You are running the same query multiple times, overwriting the $result variable for no reason, having useless $sql for the later 2 fetch without using them, and fetching a single $result twice by mistake.

So there are multiple concept problem with your code. I think your current code is something equivalant to this:

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

But frankly, it makes no sense to me to print an empty table when there is no result. So what you need is probably something like this.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM