繁体   English   中英

为什么此函数不能返回正确的结果?

[英]Why is this function not returning the correct result?

我正在通过创建两个函数“ daySum()”和“ yesterdaySum()”从数据库中获取数据。 调用这些函数时,它将分别返回正确的值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????

您的功能只是打印东西 。这就是为什么添加不起作用的原因。

您必须像下面那样更改您的代码( 一些改进,也有评论):

<?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

现在最简单的是 使用BETWEEN查询

<?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);

注意:-也许这是您的家庭作业,但是从今天起开始学习prepared statements ,以防止您从SQL INJECTION查询。这是重要且必要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM