我对从mysql数据库中提取数据的while循环有问题。实际上,用户搜索一个字符串,然后将该字符串与数据库中可能的名称进行比较。如果字符串与数据库中的结果匹配,则返回该行,并在其自己的div中显示与结果相关的信息。
下面是与while循环有关的有点错误的代码:
(LOTS OF CODE RELATING TO EVERYTHING ELSE BEFORE THIS)
$tempVar = 0;
while ($data = mysql_fetch_array($data)) {
$lstId = $data['id'];
$lstName = $data['name'];
$lstDesc = $data['description'];
$lstAddress = $data['address'];
$lstArea = $data['area'];
$lstProvince = $data['province'];
$lstPostcode = $data['postcode'];
$lstTel = $data['tel'];
$lstCell = $data['cell'];
$lstFax = $data['fax'];
$lstEmail = $data['email'];
if ($tempVar == 0) {
$pageContent .= '
<div class="searchResultS">
';
}
$pageContent .= '
<div class="searchResult">
<h2>'.$lstName.'</h2>
<div class="bizDesc">
<p>Description: '.$lstDesc.'</p>
</div>
<div class="bizAddr">
<p>Street: '.$lstAddress.'</p>
<p>Town: '.$lstArea.'</p>
<p>Province: '.$lstProvince.'</p>
<p>Post Code: '.$lstPostcode.'</p>
</div>
<div class="bizCont">
<p>Tel: '.$lstTel.'</p>
<p>Cell: '.$lstCell.'</p>
<p>Fax: '.$lstFax.'</p>
<p>eMail: '.$lstEmail.'</p>
</div>
</div>
';
$tempVar ++;
}
if ($anymatches > 0 and count($tempVar) == count($anymatches)) {
$pageContent .= '
<!-- end .searchResultS --></div>
';
}
我遇到的问题是,当用户搜索包含两个或多个可能结果的字符串时。似乎只显示最后一个结果。并不是所有可能的结果,每个结果都包含在各自的div中,我知道有一个事实是有更多的结果,因为生成了一行显示返回的mysql行数。
有人对这个问题有什么建议或解决办法吗?我假设有东西被遗漏了,但是经过了许多小时的试错测试,我对这个行为为什么目前存在没有确凿的理由。
如果有任何帮助,我们将不胜感激,谢谢!
最佳答案
看起来您正在第一次循环迭代时将结果资源$data
覆盖到数组。在这个迭代之后,$data
不能再作为结果资源访问,所以它看起来好像只有一个结果。
while ($data = mysql_fetch_array($data)) {
// Instead use a new variable:
while ($row = mysql_fetch_array($data)) {
//-----^^^^
// Then change all of these
$lstId = $row['id'];
$lstName = $row['name'];
$lstDesc = $row['description'];
...
...
$lstEmail = $row['email'];
您应该在开发中打开
display_errors
,因为我希望您在第一次循环迭代后收到此警告:警告:mysql_fetch_array()期望参数1是资源。。。
关于php - Php/Mysql while循环-Div不会为每个可能的结果重复。仅显示最后结果? (有一些代码),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8014624/