2012-08-17 65 views
7

保持ORDER BY这是我的代码:fetch_array()不是从查询

<?php 
header("Expires: Mon, 26 Jul 1990 05:00:00 GMT"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 

//TESTING CONNECT 
include 'connect.php'; 
$mysqli = connectDB(); 
getWells(2, $mysqli); 

function getWells($company,$mysqli){ 
//include 'connect.php'; 
define("MAX_TOP", 96);//96 INCHES == 8 FEET 
define("BARRELS_PER_INCH", 1.67); 

//$company = $_GET['company']; 
//$mysqli = connectDB(); 

$count = 0; 
$sql = "SELECT wells.id, name, top, bottom, last_pulled, bbl_per_hour 
     FROM wells, history 
     WHERE company_id ='$company' 
     AND wells.id = well_id 
     AND last_record = 1;"; 

if($result = $mysqli->query($sql)) { 
    while($row = $result->fetch_array()){ 
     $well_name = $row['name']; 
     $well_id = $row['id']; 
     $last_bottom = $row['bottom']; 
     $last_pulled = $row['last_pulled']; 
     $bbl = $row['bbl_per_hour']; 

     $projected_fill = MAX_TOP - $last_bottom; 
     $projected_barrels = $projected_fill * BARRELS_PER_INCH; 
     $time_to_fill = $projected_barrels/$bbl; 
     $exploded_time = explode('.', $time_to_fill); 
     $hours = $exploded_time[0];      
     $frac_hours = '.'.$exploded_time[1]; 
     $minutes = floor($frac_hours*60); 
     $projected = strtotime($last_pulled." +".$hours." hours"." +".$minutes." minutes");    
     $projected_datetime = date("Y-m-d H:i:s",$projected);  

     $insert = "INSERT INTO temp_wells (well_id,well_name,last_pull,hrs_to_fill) 
        VALUES ('$well_id','$well_name','$last_pulled','$projected_datetime');"; 
     if(!$result2 = $mysqli->query($insert)){ 
      return "There was a problem inserting data into databse. Contact Larsoon Computer Services. - GetWells.php, Line 57 ".$mysqli->error; 
     } 
     else{ 
      $get_temp = "SELECT * FROM temp_wells 
         ORDER BY hrs_to_fill ASC;"; 
      if(!$result3 = $mysqli->query($get_temp)){ 
       return "There was a problem retrieving data. Contact Larson Computer Services. - GetWells.php, Line 63 ".$mysqli->error; 
      } 
      else{ 
       //echo var_dump($result3); 
       while ($row1 = $result3->fetch_array()) { 
        $o_well_id = $row1['well_id']; 
        $o_well_name = $row1['well_name']; 
        $o_pull_date = $row1['hrs_to_fill']; 

        //TESTING DATA OUTPUT 
        echo $o_well_id; 
        echo '<br>'; 
        echo $o_well_name; 
        echo '<br>'; 
        echo $o_pull_date; 
        echo '<br>'; 
        echo '<br>'; 

        //CREATE THE COUNTDOWN 
        $date = date('U', strtotime($o_pull_date)); 
        $difference = $date - date('U'); 
        $diff_days = floor($difference/(24*60*60)); 
        $diff_hours = floor($difference % (24 * 60 * 60)/3600); 
        $diff_min = floor(($difference % (24 * 60 * 60) % 3600)/60); 
        $diff_secs = floor((($difference % (24 * 60 * 60) % 3600)%60)/1); 

        if($diff_days <= 0){ 
         $countdown = "$diff_hours hrs $diff_min min"; 
        } 
        else{ 
         $countdown = "$diff_days days $diff_hours hrs $diff_min min"; 
        } 
        if($count == 0) { 
         $data_str = $o_well_id.'|'.$o_well_name.'|'.$countdown; 
         $count++; 
        } 
        else { 
         $data_str = $data_str.'|'.$o_well_id.'|'.$o_well_name.'|'.$countdown; 
        } 
       } 
      } 
     } 
     $truncate = "TRUNCATE TABLE temp_wells;"; 
     if(!$result4 = $mysqli->query($truncate)){ 
      return "There was a problem truncating table. Contact Larson Computer Services. ".$mysqli->error; 
     } 
    } 
}//END OF IF 
if($data_str == null && $data_str == ""){ 
    $data_str = 0; 
} 
return $data_str; 
} 

?> 

产地:

1 
ATESTWELL 
2012-08-17 14:55:37 

3 
HAMLET 1-11H 
2012-08-17 17:40:00 

4 
HAMLET 2-11H 
2012-08-17 18:47:14 

8 
DANIEL 1-33H 
2012-08-17 13:15:39 

6 
DANIEL 21-33H 
2012-08-19 13:47:16 

9 
FAVER 1-29H 
2012-08-17 14:31:00 

表的样子:

well_id  int(11) 

well_name varchar(50) 

last_pull datetime 

hrs_to_fill datetime 

哪一个不是通过命令日期时间字段就像它应该。在PHPMyadmin上运行查询可以正常工作,但是这段代码不是......任何想法?

感谢,

路易斯

+2

你可以发布你正在查询的表的设计视图吗?什么是hrs_to_fill的数据类型? – mithilatw 2012-08-17 17:49:45

+1

您很可能会执行与您发布的代码不同的代码。确保你执行的PHP文件是你想要的。另一个选项是浏览器缓存的页面。 – Andy 2012-08-17 18:24:57

+0

如果你害怕? – LouieV 2012-08-17 19:08:36

回答

1

你的数据实际上是有序的;如果仔细观察,您会看到每个井的排序都基于日期/时间。原因是你有两个循环,内循环运行三次,每个井一次。

您可能必须在外循环之后移动内循环,以便在第一个循环中填入temp_wells表并在第二个循环中查询它。

+0

正确!对于每个'well','hrs_to_fill'被排序(参见HAMLET和DANIEL) – zessx 2012-08-21 07:57:53

+0

我已经将一些代码从一个循环移到另一个循环几次,最后混合了代码。无论如何谢谢大家的意见 – LouieV 2012-08-21 17:50:32