php - fetch_array() क्वेरी से ORDER द्वारा संरक्षित नहीं है



mysql mysqli (1)

आपका डेटा वास्तव में आदेश दिया गया है; यदि आप बारीकी से देखते हैं, तो आप देखेंगे कि प्रत्येक अच्छी तरह से यह दिनांक / समय के आधार पर होता है। इसका कारण यह है कि आपके पास दो छोर हैं, आंतरिक लूप तीन बार चला जाता है, प्रत्येक कुएं के लिए एक

आपको बाहरी लूप के बाद भीतरी लूप को स्थानांतरित करना पड़ सकता है, ताकि आप पहली लूप में temp_wells तालिका को पॉप्यूलेट कर temp_wells और दूसरे में इसे क्वेरी कर सकते हैं।

यह मेरा कोड है:

<?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 पर क्वेरी चलाना ठीक काम करता है, लेकिन यह कोड नहीं है ... कोई विचार?

धन्यवाद,

लुइस





mysqli