Mysql 我的一个查询在正常工作了10年后只返回一条记录——我没有更改任何代码

Mysql 我的一个查询在正常工作了10年后只返回一条记录——我没有更改任何代码,mysql,arrays,while-loop,Mysql,Arrays,While Loop,我的网站上有一个mysql数据库已经有10年了。我最近(5或6个月前)不得不升级到5.x版,而且没有任何问题。我的数据库使用了四个表,直到大约一周前一直运行良好。我的一个表现在只返回一条记录,即使有许多记录与查询匹配。我已经很多年没有对代码进行任何更改了。我已经研究这个问题好几个小时了,还没有找到任何答案,所以我在这里发布代码以寻求帮助。这段代码查询的是一个包含11549条记录的平面文件,每条记录包含15个字段 <?php mysql_connect ('localhost:/tm

我的网站上有一个mysql数据库已经有10年了。我最近(5或6个月前)不得不升级到5.x版,而且没有任何问题。我的数据库使用了四个表,直到大约一周前一直运行良好。我的一个表现在只返回一条记录,即使有许多记录与查询匹配。我已经很多年没有对代码进行任何更改了。我已经研究这个问题好几个小时了,还没有找到任何答案,所以我在这里发布代码以寻求帮助。这段代码查询的是一个包含11549条记录的平面文件,每条记录包含15个字段

<?php   

mysql_connect ('localhost:/tmp/mysql5.sock', 'my_user_name', 'my_password') or
    die("Could not connect: " . mysql_error());

mysql_select_db (virtualc_sac);
$result = mysql_query ("select * from doublestar
                        where con = '$con' and sep > '$sep1' and sep < '$sep2' 
                        group by 'name' order by '$order'");

echo ("<tr><td colspan='14' align='center'><font face='arial, helvetica' size='2'>
       <b>Search Results for<br> 
       Constellation=$con and Separation > $sep1 arc minutes
       and Separation < $sep2 arc minutes, Sorted by $order</b><br><br></td></tr>");

if (mysql_num_rows($result) == 0) {
    echo "<tr><td width='10'></td>

    <td width='470' colspan='14' align='left'><font face='arial, helvetica' size='2'>Sorry, no records were found. Try altering your selection criteria. Hitting the BACK button on your browser will show you your previous selection criteria.</td>";

} else {
    while ($row = mysql_fetch_array($result)) {
       { 
           echo "<tr>
                     <td width='80' align='left' valign='bottom'>
                         <font face='arial, helvetica' size='1'>Name
                     </td>
                     <td width='50' align='left' valign='bottom'>
                         <font face='arial, helvetica' size='1'>Star
                     </td>
                     <td width='50' align='left' valign='bottom'>
                         <font face='arial, helvetica' size='1'>RA
                     </td>
                     <td width='50' align='left' valign='bottom'>
                         <font face='arial, helvetica' size='1'>Dec
                     </td>
                     <td width='30' align='left' valign='bottom'>
                         <font face='arial, helvetica' size='1'>Comp
                     </td>
                     <td width='50' align='left' valign='bottom'>
                         <font face='arial, helvetica' size='1'>Mag1
                     </td>
                     <td width='50' align='left' valign='bottom'>
                         <font face='arial, helvetica' size='1'>Mag2
                     </td>
                     <td width='30' align='left' valign='bottom'>
                         <font face='arial, helvetica' size='1'>Sep
                     </td>
                     <td width='30' align='left' valign='bottom'>
                         <font face='arial, helvetica' size='1'>PA
                     </td>
                     <td width='60' align='left' valign='bottom'>
                         <font face='arial, helvetica' size='1'>U2000
                     </td>
                     <td width='30' align='left' valign='bottom'>
                         <font face='arial, helvetica' size='1'>Spec
                     </td>
                     <td width='240' align='left' valign='bottom'>
                         <font face='arial, helvetica' size='1'>Notes
                     </td>";

           echo "<tr>
                     <td width='80' align='left' valign='top'>
                         <font face='arial, helvetica' size='1'>";
           echo $row["name"];
           echo "</td>";
           echo "<td width='50' align='left' valign='top'>
                     <font face='arial, helvetica' size='1'>";
           echo $row["star"];
           echo "</td>";
           echo "<td width='50' align='left' valign='top'>
                     <font face='arial, helvetica' size='1'>";
           echo $row["ra"];
           echo "</td>";
           echo "<td width='50' align='left' valign='top'>
                     <font face='arial, helvetica' size='1'>";
           echo $row["decl"];
           echo "</td>";
           echo "</td>";
           echo "<td width='30' align='left' valign='top'>
                     <font face='arial, helvetica' size='1'>";
           echo $row["comp"];
           echo "</td>";
           echo "<td width='50' align='left' valign='top'>
                     <font face='arial, helvetica' size='1'>";
           echo $row["mag1"];
           echo "</td>";
           echo "<td width='50' align='left' valign='top'>
                     <font face='arial, helvetica' size='1'>";
           echo $row["mag2"];
           echo "</td>";
           echo "<td width='30' align='left' valign='top'>
                     <font face='arial, helvetica' size='1'>";
           echo $row["sep"];
           echo "</td>";
           echo "<td width='30' align='left' valign='top'>
                     <font face='arial, helvetica' size='1'>";
           echo $row["pa"];
           echo "</td>";
           echo "<td width='60' align='left' valign='top'>
                     <font face='arial, helvetica' size='1'>";
           echo $row["u2000"];
           echo "</td>";
           echo "<td width='30' align='left' valign='top'>
                     <font face='arial, helvetica' size='1'>";
           echo $row["spec"];
           echo "</td>";
           echo "<td width='240' align='left' valign='top'>
                     <font face='arial, helvetica' size='1'>";
           echo $row["notes"];
           echo "</td></tr>"; 
       }
    }
}

?>

@DuaneFrybarger我首先要确保您的数据库正常。就我个人而言,我最喜欢的工具是,使用SQL选项卡键入查询并运行它。如果所有记录都按预期显示,则数据库正常。如果没有,则运行一个简单的
SELECT*..
查询以确保所有记录都在那里。如果所有这些都正常,那么您需要再次检查所有HTML。其他一些想法:

  • 创建标题行的代码在while循环中-是否希望每个记录都有标题行
  • 前面提到的
    echo$row[“decl”]后面有一个额外的
  • 脚本中前面分配的变量是否来自
    $\u POST
    -变量

  • @DuaneFrybarger我会首先确保您的数据库正常。就我个人而言,我最喜欢的工具是,使用SQL选项卡键入查询并运行它。如果所有记录都按预期显示,则数据库正常。如果没有,则运行一个简单的
    SELECT*..
    查询以确保所有记录都在那里。如果所有这些都正常,那么您需要再次检查所有HTML。其他一些想法:

  • 创建标题行的代码在while循环中-是否希望每个记录都有标题行
  • 前面提到的
    echo$row[“decl”]后面有一个额外的
  • 脚本中前面分配的变量是否来自
    $\u POST
    -变量

  • 您是否尝试过按名称分组、按$order分组、不带引号?是否检查了数据库以确保数据没有丢失或损坏?除此之外,您的表HTML似乎非常糟糕。像
    (也许你的意思是
    ),未关闭的
    标签,各种各样的问题。也许你的浏览器得到了更新,现在它没有正确显示这个HTML,除了第一列之外,它什么都省略了——这只是一个猜测。我没有尝试过使用$order(不带引号)按名称顺序分组。发布此问题后,我发现我的其他查询没有正确排序,因此可能与带引号的$order有关。我检查了表,似乎没有问题。您是否尝试过按名称分组,按$order分组,不带引号?是否检查了数据库以确保数据没有丢失或损坏?除此之外,你的桌子好像坏了。像
    (也许你的意思是
    ),未关闭的
    标签,各种各样的问题。也许你的浏览器得到了更新,现在它没有正确显示这个HTML,除了第一列之外,它什么都省略了——这只是一个猜测。我没有尝试过使用$order(不带引号)按名称顺序分组。自从发布这个问题以来,我发现我的其他查询没有正确排序,所以可能与$order有引号有关。我检查了表,它看起来很好。我找到了它。我误解了nick rulez关于按$order删除name order中的引号的建议。当我将“按名称分组”顺序改为“按名称分组”顺序时,问题就解决了。仍然不知道为什么它会工作10年,然后停止,但我猜我的isp对mysql或php进行了更新,导致了这个问题。谢谢大家的建议和支持,我找到了。我误解了nick rulez关于按$order删除name order中的引号的建议。当我将“按名称分组”顺序改为“按名称分组”顺序时,问题就解决了。仍然不知道为什么它会工作10年,然后停止,但我猜我的isp对mysql或php进行了更新,导致了这个问题。感谢大家的建议和支持。