我试图弄清楚下面的mysqli代码出了什么问题。数据肯定在表中。我有两个问题:
- 为什么这没有给我任何结果?
-
我可以将回显
<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>
查询看起来很可靠,其余代码也是如此。以下是一些可供尝试的故障排除步骤:
-
echo
$query
并直接针对数据库运行它。你得到结果吗?如果您没有从直接查询中获得任何结果,则意味着查询返回 0 行,并且您的表最终也将为空。 - 执行
var_dump($result)
以验证其中是否存储了信息。您还可以将更改$result = $mysqli->query($query);
添加到$result = $mysqli->query($query) or die $mysqli->error;
这两个步骤的结果应该可以让您很好地了解哪里出了问题。通常,您希望停止查询过程的每个部分并查看所涉及的每个变量,以确保其中存储了您期望的数据。
回答你的第二个问题:是的,你可以。如果将表的代码放在单独的文件中,然后include()
它,则变量仍可用于包含的代码。
请参阅 包含() 上的 PHP 手册