已解决未定义错误,但现在只显示1条记录,而不是预期的查询3条


Resolved Undefined Error, but now only 1 record displays instead of expected 3 for query

解决未定义偏移错误后,错误消息不再存在,但现在显示的结果仅为一条记录,而不是预期的记录数,例如3。

$result = mysql_query($sql);
while($row = mysql_fetch_array($result)){
    $time = $row['vluchttijd'];
    if (!function_exists('timeInWords')) {
    function timeInWords($time) {
        list($hours, $minutes) = explode(':', $time);
        return (int)$hours .  " hrs " . (int)$minutes . " min";
   }    $result = mysql_query($sql);
{

我可以删除$time down中的所有内容,然后它返回所有预期的记录。

按要求提供所有代码。首先我要说明的是,我对PHP还是一个新手,所以请不要对我太苛刻:

<?php
include('../datalogin.php');    // include your code to connect to DB.

mysql_query("SET CHARACTER SET 'utf8';");//GET and POST
mysql_query("SET NAMES 'utf8';");//POST
/* Get data. */
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
 die("Invalid ID specified.");
} 
$rID = (int)$_GET['id'];
$sql = "a bunch of SQL code removed to save space
 WHERE vg.reisID = '$rID'
ORDER BY vg.vertrekdatum2 ASC";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)){
$time = $row['vluchttijd'];
if (!function_exists('timeInWords')) {
function timeInWords($time) {
    list($hours, $minutes) = explode(':', $time);
    return (int)$hours .  " hrs " . (int)$minutes . " min";
}   $result = mysql_query($sql);
{
echo "<table border='0' width='640'>";
echo "<tbody>";
echo "<tr>";
echo "<td colspan='3'><strong>" .date('d-M-Y H:i', strtotime($row['vertrekdatum2'])). "  
</strong></td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan='3'><span class='c_vertrek'>(D)  
".htmlspecialchars($row['luchthavennaam'])."</span></td>";
echo "</tr>";
echo "<tr>";
echo "<td width='18%'><strong>Duration:</strong></td>";
echo "<td width='41%'>".timeInWords($time)."</td>";
echo "<td rowspan='4' width='41%' align='center' valign='middle'><img    
src='../logos/".$row['logo']."'</td>";
echo "</tr>";
echo "<tr>";
echo "<td><strong>Equipment:</strong></td>";
echo "<td>".$row['toestel']."&nbsp;".$row['erlr']."</td>";
echo "</tr>";
echo "<tr>";
echo "<td><strong>Class:</strong></td>";
echo "<td>".$row['reisklass']."</td>";
echo "</tr>";
echo "<tr>";
echo "<td><strong>Miles:</strong></td>";
echo "<td>".$row['afstand']." miles</td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan='3'></td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan='3' height='12'></td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan='3'><strong>".date('d-M-Y H:i', strtotime($row['aankomstdatum2']))."
</strong></td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan='3'><span class='c_aankomst'>(A) 
".htmlspecialchars($row['aankomstnaam'])."</span></td>";
echo "</tr>";
echo "<tr>";
echo "<td></td>";
echo "<td></td>";
echo "<td></td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan='3' height='1' bgcolor='#585858'></td>";
echo "</tr>";
echo "<tr>";
echo "<td></td>";
echo "<td></td>";
echo "<td></td>";
echo "</tr>";
echo "<tr>";
echo "<td></td>";
echo "<td></td>";
echo "<td></td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan='3'></td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan='3'></td>";
echo "</tr>";
}
}
}
echo "</table>";
?>

这应该做到了,您再次使用相同的查询调用mysql_query,因此这将始终给您相同的结果。

我清理了while循环的开始部分,所以它只从结果对象中获取数据并打印出来。你的时间函数不需要在循环里,所以我把它移到了外面。

我还从一些echo的

中清理了循环
<?php
include('../datalogin.php');    // include your code to connect to DB.
function timeInWords($time) {
    list($hours, $minutes) = explode(':', $time);
    return (int)$hours .  " hrs " . (int)$minutes . " min";
}

mysql_query("SET CHARACTER SET 'utf8';");//GET and POST
mysql_query("SET NAMES 'utf8';");//POST
/* Get data. */
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
 die("Invalid ID specified.");
} 
$rID = (int)$_GET['id'];
$sql = "a bunch of SQL code removed to save space
 WHERE vg.reisID = '$rID'
ORDER BY vg.vertrekdatum2 ASC";
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result))
{
$time = $row['vluchttijd'];    
echo "<table border='0' width='640'>
<tbody>
<tr>
<td colspan='3'><strong>" .date('d-M-Y H:i', strtotime($row['vertrekdatum2']))."
</strong></td>
</tr>
<tr>
<td colspan='3'><span class='c_vertrek'>(D)  
".htmlspecialchars($row['luchthavennaam'])."</span></td>
</tr>
<tr>
<td width='18%'><strong>Duration:</strong></td>
<td width='41%'>".timeInWords($time)."</td>
<td rowspan='4' width='41%' align='center' valign='middle'><img    
src='../logos/".$row['logo']."'</td>
</tr>
<tr>
<td><strong>Equipment:</strong></td>
<td>".$row['toestel']."&nbsp;".$row['erlr']."</td>
</tr>
<tr>
<td><strong>Class:</strong></td>
<td>".$row['reisklass']."</td>
</tr>
<tr>
<td><strong>Miles:</strong></td>
<td>".$row['afstand']." miles</td>
</tr>
<tr>
<td colspan='3'></td>
</tr>
<tr>
<td colspan='3' height='12'></td>
</tr>
<tr>
<td colspan='3'><strong>".date('d-M-Y H:i', strtotime($row['aankomstdatum2']))."
</strong></td>
</tr>
<tr>
<td colspan='3'><span class='c_aankomst'>(A) 
".htmlspecialchars($row['aankomstnaam'])."</span></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td colspan='3' height='1' bgcolor='#585858'></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td colspan='3'></td>
</tr>
<tr>
<td colspan='3'></td>
</tr>";

}
echo "</table>";
?>