PHP while循环不mysql_result

问题描述:

工作,我有一个医生查询:PHP while循环不mysql_result

// Primary Physician Query 
$qPhysician = mysql_query("SELECT * FROM physicians ORDER BY lastName ASC, firstName ASC"); 
$rowPhysician = mysql_fetch_array($qPhysician); 

// State Query for Physician 
$idStatePhysician = $rowPhysician['idstate']; 
$qStatePhysician = mysql_query("SELECT * FROM states WHERE idstate=$idStatePhysician"); 
$rowStatePhysician = mysql_fetch_array($qStatePhysician); 

// City Query for Physician 
$idCityPhysician = $rowPhysician['idcity']; 
$qCityPhysician = mysql_query("SELECT * FROM cities WHERE idcities=$idCityPhysician"); 
$rowCityPhysician = mysql_fetch_array($qCityPhysician); 

我有一个while循环来显示所有的医生行到表:

$num = mysql_num_rows($qPhysician); 
    $i=0; 
    while($i < $num) 
     { 
     $idphysicians = $rowPhysician['idphysicians']; 
     if ($i % 2 == 0){ 
     echo "<tr class='even' onclick=\"DoNav('physicianUpdate.php?idphysicians=$idphysicians');\">"; 
     } 
     else{ 
     echo "<tr class='odd' onclick=\"DoNav('physicianUpdate.php?idphysicians=$idphysicians');\">"; 
     } 
     echo "<td>" . mysql_result($qPhysician,$i,"lastName") . "</td>"; 
     echo "<td>" . mysql_result($qPhysician,$i,"firstName") . "</td>"; 
     echo "<td>"; 
     if(isset($rowPhysician['idcity'])){echo mysql_result($qCityPhysician,$i,"name");} else{} 
     echo "</td>"; 
     $i++; 
     } 

我的问题是:我我的医生桌上有3行数据。每个都有一个“idcity”的值,反映了我的City表中的idnumber。然而,数据的第1行正确显示idcity =名称,但第二和第三行给了一个错误:

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 1 on MySQL result index 7 in C:\wamp\www\iPOC\physicians.php on line 55 

另外,如果我有该行之一idcity空值,它也产生一个错误。

请帮忙!提前致谢!

问题是你使用mysql_result()带有单向结果。正确的解决方法是使用mysql_fetch_*()函数之一来检查while循环中的返回值。

while($row = mysql_fetch_array($qPhysician)) { 
    ... 
} 
+0

当我把它改成这个代码,它显示像数百同样的事情的记录,它并没有停止。所以我手动杀死了任务加载 –

+0

确定它有点工作,但它只显示最后2行。 “阿诺德Villaluz”行没有显示。 –

像这样的东西可能会更好地工作:

$qCityPhysician = mysql_query("SELECT * FROM cities WHERE idcities=$idCityPhysician"); 
$qCityPhysicians = array(); 
while($row = mysql_fetch_array($qCityPhysician)) { 
    $qCityPhysicians[$row['idcity']] = $row['name']; 
} 
$qPhysician = mysql_query("SELECT * FROM physicians ORDER BY lastName ASC, firstName ASC"); 
$i=0; 
while($row = mysql_fetch_array($qPhysician)) { 
    if ($i % 2 == 0) { 
     echo "<tr>"; 
     echo "<td>" . $row['lastName'] . "</td>"; 
     echo "<td>" . $row['firstName'] . "</td>"; 
     echo "<td>"; 
     if(isset($row['idcity'])) { 
      echo $qCityPhysicians[$row['idcity']]; 
     } 
     echo "</td>"; 
     $i++; 
    } 
} 
+0

你真的想要“如果($ i%2 == 0){”在那里?这会导致它跳过每一个奇数行。 –

+0

它什么都不显示? –

+0

我之所以这样。这是为我的交替行︰if($ i%2 == 0){ \t \t \t \t echo“

“; \t \t \t} \t \t \t其他{ \t \t \t回声“