这个 mysqli 查询有什么问题


What's wrong with this mysqli query?

我试图弄清楚下面的mysqli代码出了什么问题。数据肯定在表中。我有两个问题:

  1. 为什么这没有给我任何结果?
  2. 我可以将回显<table></table>部分放在单独的 php 文件中吗,如果是,我将如何调用$name,$partner,$cell等?

      <?php
      $mysqli = new mysqli($host, $uname, $pword, $db);
    if ($mysqli->connect_errno)
    {
    echo "Connection failed: %s'n", $mysqli->connect_error;
    exit();
    }
      $query = ("SELECT * FROM contacts WHERE contacttype IN ('Buyer','Seller','Buyer / Seller','Investor') AND leadstatus = 'New' ORDER BY date DESC");
      $result = $mysqli->query($query);
      while ($row = $result->fetch_array()) {
      $space = (!empty($row['firstname']) && !empty($row['lastname'])) ? ' ' : '';        
      $name = $row['firstname'].$space.$row['lastname'];       
      $partner  = $row['spousefirst'];   
      $cell = (!empty($row['phonecell'])) ? " {$row['phonecell']} (cell)" : ''; 
      $email = (!empty($row['email'])) ? " {$row['email']} (email)" : '';
      $ID = $row['ID'];
      echo'<table>
      <tbody>
      <tr>
        <td><input type="checkbox" name="" id="" value="<? echo $ID; ?>"></td>
        <td><a href="/backend/leads/view/?ID=<? echo $ID; ?> "><strong><? echo $name; ?></strong></a></td>
        <td><a href="/backend/leads/view/?ID=<? echo $ID; ?> "><? echo $partner; ?></a></td>
        <td><? echo $phonecell; ?></td>
        <td><a href="mailto:<? echo $email; ?>"><? echo $email; ?></a></td>
        <td><? echo date("M jS, g:i A", strtotime($date)); ?></td>
        <td><? echo $contacttype; ?></td>
        <td><? echo $agentassigned; ?></td>
        <td><? echo $leadstatus; ?></td>
        <td><a href="/backend/contacts/notes.php?ID=<? echo $ID; ?>">View </a>+ </td>
        <td><a href="/backend/contacts/todo.php?ID=<? echo $ID; ?>">View </a>+ </td>
        <td><a href="/backend/contacts/deletesuccess.php?ID=<? echo $ID; ?>">D</a></td>
        </tr>
        </tbody>
    </table>';
         }
         ?>
    

编辑:

它显示了<table>,但只是没有给我$name的价值,$email......等。

最终的回声看起来构造不佳。我更喜欢使用串联字符串来输出变量,就像这样(我只放了几行作为示例):

echo'<table>
<tbody>
   <tr>
     <td><input type="checkbox" name="" id="" value="'. $ID .'"></td>
     <td><a href="/backend/leads/view/?ID='. $ID .'"><strong>'. $name.' </strong></a></td> 

查询看起来很可靠,其余代码也是如此。以下是一些可供尝试的故障排除步骤:

  1. echo $query并直接针对数据库运行它。你得到结果吗?如果您没有从直接查询中获得任何结果,则意味着查询返回 0 行,并且您的表最终也将为空。
  2. 执行var_dump($result)以验证其中是否存储了信息。您还可以将更改$result = $mysqli->query($query);添加到$result = $mysqli->query($query) or die $mysqli->error;

这两个步骤的结果应该可以让您很好地了解哪里出了问题。通常,您希望停止查询过程的每个部分并查看所涉及的每个变量,以确保其中存储了您期望的数据。

回答你的第二个问题:是的,你可以。如果将表的代码放在单独的文件中,然后include()它,则变量仍可用于包含的代码。

请参阅 包含() 上的 PHP 手册