我对从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/

10-14 13:45
查看更多