2017-09-06 8 views
0

"daySum()"と "yesterdaySum()"という2つの関数を作成してデータベースからデータを取得しています。これらの関数を呼び出すときは、それぞれ54000と51000という正しい値を返します。この関数が正しい結果を返さないのはなぜですか?

私はこれらを変数$ dayと$ yesterdayに入れますが、可変操作 "$ day + $ yesterday"を実行すると、0が出力されます。これは私のプロジェクトに必要な条件を作成することができません。

あなたは私を助けることはできますか?

ありがとうございます!

//DEFINING 2 FUNCTIONS: daySum() and yesterdaySum() 

function daySum() { 
    //connect to database 
    require 'connect.php'; 

    // query 
    $query = "SELECT sum(till_amount) FROM Cash "; 
    $query .= "WHERE date ='2017-09-05'"; 
    $result = mysqli_query($connect, $query); 

    // fetch 
    while($row = mysqli_fetch_assoc($result)) { 
     print_r($row["sum(till_amount)"]); 
    } 
} 

function yesterdaySum() { 
    //connect to database 
    require 'connect.php'; 

    // query 
    $query = "SELECT sum(till_amount) FROM Cash "; 
    $query .= "WHERE date ='2017-09-04'"; 
    $result = mysqli_query($connect, $query); 

    // fetch 
    while($row = mysqli_fetch_assoc($result)) { 
     print_r($row["sum(till_amount)"]); 
    } 
} 

// PUTTING THEM INTO VARIABLE 

$day = daySum(); // sum is 54000 
$yesterday = yesterdaySum(); // sum is 51000 

    // adding $day plus $yesterday should print 105000 
    // and here is the problem... 

print($day + $yesterday); // it prints 0 

//WHY???? 
+6

これらの関数は何も返されません(http://www.php.net/manual/en/functions.returning-values.php)ので、結果は –

答えて

1

あなたの関数はだけ印刷するものです .Thatのそれが動作していない追加している理由。あなたは以下のようにコードを変更する必要が

いくつかの改善もコメント化されている): - :

<?php 
require 'connect.php'; //don't add multiple time 
function daySum() { 
    $query = "SELECT sum(till_amount) FROM Cash WHERE date BETWEEN '2017-09-04' AND '2017-09-05'"; 
    $result = mysqli_query($connect, $query); 
    while($row = mysqli_fetch_assoc($result)) { 
     return $row["sum(till_amount)"]); 
    } 
} 

$day = daySum(); 

print($day); 
-

<?php 
require 'connect.php'; //don't add multiple time 
function daySum() { 
    $query = "SELECT sum(till_amount) FROM Cash WHERE date ='2017-09-05'"; 
    $result = mysqli_query($connect, $query); 
    while($row = mysqli_fetch_assoc($result)) { 
     return $row["sum(till_amount)"]); //return value 
    } 
} 

function yesterdaySum() { 
    $query = "SELECT sum(till_amount) FROM Cash WHERE date ='2017-09-04'"; 
    $result = mysqli_query($connect, $query); 
    while($row = mysqli_fetch_assoc($result)) { 
     return $row["sum(till_amount)"]); //return value 
    } 
} 

$day = daySum(); // now $day have value 
$yesterday = yesterdaySum(); //now $yesterday have value 


print((int)$day + (int)$yesterday); // it will work fine now 

は今最も簡単use BETWEEN queryにあります

注: -は、それはあなたの宿題のタスクだが、SQL INJECTION .ITの重要かつ必要から、あなたのクエリを防ぐために、病棟についてprepared statements今日の学習を始めることに。

+0

と表示されます。ご協力いただきありがとうございます!私はあなたのコードを試しましたが、変数$ dayと$ yを追加する何らかの理由で、2が(それぞれの関数が1を返すように)2を出力しています。なにか提案を? お返事ありがとうございます! –

+0

質問の結果を確認してください –

+0

@NicolasIbarraは 'print((int)$ day +(int)$ yesterday);'を使用します(私も自分のコードで編集しました)。 –

関連する問題