2016-04-01 17 views
0

私は私のシステムのための平均キロメートルの実行電卓を作成しています。だから、私は最後の2つの日付と最後の2つをデータベース上で実行しようとしています。複数の行を取得し、変数に格納します。 MysqlとPHP

これは私の現在のコードです:

<?php 

$conn = mysqli_connect('localhost','root','','mypms'); 

$sqldates = "SELECT dateinput FROM sched ORDER BY dateinput DESC LIMIT 2"; 
$sqlrun = "SELECT reading FROM sched ORDER BY reading DESC LIMIT 2"; 

$resultdate = mysql_query($conn,$sqldates); 
$resultrun = mysql_query($conn,$sqlrun); 


while($rowdate = mysql_fetch_assoc($resultdate)) 
{ 
    this -> 
} 

$date_difference = $date2 - $date1; 

while($rowrun = mysql_fetch_assoc($resultrun)) 
{ 
    this -> 
} 

$run_difference = $run2 - $run1; 
$averagerun = $run_difference/$date_difference 

echo $averagerun; 
?> 

は、私は私のthisに何を書くべきですので、私は$日付1、$ date2のに私の$ resultrunと$ resultdateを保存することができますし、$ RUN1、$ RUN2。

注:dateinputのデータ型は、私のmysqldatabaseの日付です。

+0

- > '? – RiggsFolly

+0

[RTM](http://php.net/manual/en/index.php)をやっていることがわからない場合は、 – RiggsFolly

答えて

1

代わりにこの文字列で検索してください - それは

SELECT 
run_difference/date_difference AS averagerun 
FROM 
    (
     SELECT 
     DATEDIFF(date2,date1) AS date_difference, 
     reading2 - reading1 AS run_difference 
     FROM 
     (
      SELECT 
      (SELECT dateinput FROM sched ORDER BY dateinput LIMIT 0, 1) AS date1, 
      (SELECT dateinput FROM sched ORDER BY dateinput LIMIT 1, 1) AS date2, 
      (SELECT reading FROM sched ORDER BY reading DESC LIMIT 0, 1) AS reading1, 
      (SELECT reading FROM sched ORDER BY reading DESC LIMIT 1, 1) AS reading2 
      FROM DUAL 
     ) t1 
    )t2 

または「1つのライナー」あなたの結果を返します。これは、なぜあなたは `$これを使用することを期待しているクラスのように見えない

SELECT 
    (SELECT reading FROM sched ORDER BY reading DESC LIMIT 1, 1)-(SELECT reading FROM sched ORDER BY reading DESC LIMIT 0, 1) / DATEDIFF((SELECT dateinput FROM sched ORDER BY dateinput LIMIT 1, 1), (SELECT dateinput FROM sched ORDER BY dateinput LIMIT 0, 1)) AS averagerun 
FROM DUAL 
関連する問題