mysql_fetch_assoc“或死”语句已触发但仍在工作

时间:2011-11-19 21:30:02

标签: php mysql

如果这是一个愚蠢的问题,请原谅我。我只有一周的编程时间......

我得到了我的获取错误"或者死了"第87行触发的声明(至少在我的编辑器中它是87,不知道它将如何显示在这里)。奇怪的是它仍然有效。接下来两行中的变量正在设置并正确回显。任何关于为什么会发生这种情况的想法将不胜感激感谢。

<?php
include 'header.php';

//$results_per_page=10;
//$count_results=mysql_query("SELECT COUNT('zipcodes') FROM jobposts");
//$page_results=$count_results;
//echo $count_results;

//if ($count_results%$results_per_page!=0)
//{
//$page_results+=1;
//}


 /////// zip code search setup ///////////
 $homezip=22102;
 $radius=10;
 $id=1;

$query="select longitude,latitude from zipcodes where zipcode='$homezip'";
$run_query=mysql_query($query) or die ("run query error");
$findzip2=mysql_fetch_array($run_query) or die ("test");
$homelong=$findzip2['longitude'] or die ("array error");
$homelat=$findzip2['latitude'] or die ("array error");


function calcDist($lat_A, $long_A, $lat_B, $long_B) {

 $distance = sin(deg2rad($lat_A))
            * sin(deg2rad($lat_B))
            + cos(deg2rad($lat_A))
            * cos(deg2rad($lat_B))
            * cos(deg2rad($long_A - $long_B));

 $distance = (rad2deg(acos($distance))) * 69.09;

  return $distance;
  }
 //////// end zip code search setup ////////////////



 echo "<table border='1'>";

  if (isset($_POST['search']))
 {
  $keywords=$_POST['keywords'];
  $zipcode=$_POST['zipcode'];

  if ($zipcode=="")
  {
   ($zipcode_search="");
  }

   else
  {
   ($zipcode_search=" and zipcode='$zipcode'");
   }

   if (!(isset($_POST['hidden'])))
    {
    $search = "select * from jobposts where description LIKE '%$keywords%'            $zipcode_search";
    $run_search=mysql_query($search) or die ("cannot run search");


    //$zip_array=$main_array[''];
    //echo count($zip_array)."<br>";
    //echo $zip_array['zipcode'];


 ////store results in array
  ////pull zip codes out of array one at a time
  ////put the zip codes in the radius function - if statement
  ////if less than allowable radius - publish results

  $count=0;
    if (mysql_num_rows($run_search)>=1)
        {
        while ($query_rows=mysql_fetch_assoc($run_search))
            {
            $zip_array[$count]=($query_rows['zipcode']);

            $zip_to_test=$zip_array[$count];

            $testquery="select longitude,latitude from zipcodes where zipcode='$zip_to_test'";
            $testrun_query=mysql_query($testquery) or die ("run query error");
            $testfindzip2=mysql_fetch_assoc ($testrun_query) or die ("fetch error - testfindzip2");
            $testlong=$testfindzip2['longitude'] or die ("array error");
            $testlat=$testfindzip2['latitude'] or die ("array error");
            $count++;
            echo $testlong."<br>";
            if (calcDist($homelat,$homelong,$testlat,$testlong)<$radius)
            {
            echo "<tr><td>".$query_rows['company']."</td><td>".$query_rows['zipcode']."</td></tr>";
            }
            }
        }
        else
        {
        echo "No results found.";
        }
    }
    else
        {
        echo "Please submit search data before submitting.";
        }


    }
   else

   {
   echo "Failed to submit search request.";
  }



  ?>

2 个答案:

答案 0 :(得分:3)

mysql函数只返回false,如果查询出错,会触发你的die():语法错误,没有连接,权限被拒绝等等......

不返回结果的查询不是错误条件,不会触发or die()。空结果集是完全有效的结果集。

同样,

$var = $othervar or die();

没有任何意义,因为作业总会成功(除非你的内存不足或其他东西)。

答案 1 :(得分:0)

如果调用die语句,脚本无法继续执行。我不相信魔法。所以,程序的输出是

...
fetch error - testfindzip2
...<br>
...

如果“是” - 你在php中发现了一些主要的错误。如果“不”,请在此处显示。