繁体   English   中英

在PHP中使用mysql查询返回0个结果

[英]0 results returned with mysql query in PHP

我正在尝试创建一个图表,该图表从我们的一个数据库中获取数据,并计算过去12个月中每个问题的数量。 该查询运行正常,但是即使数据库中存在与该查询匹配的记录,该查询仍将返回0结果。 我正在使用的代码如下...

 <?php
if (isset($_POST['dept'])) {
    $dept = $_POST['dept'];

} else {

    $dept = '';

}


for ($i = 1; $i <= 12; $i++) {
    $months[] = date("Y-m-d", strtotime(date('Y-m-01') . " -$i months"));

}

foreach ($months as $month => $value) {

    $theMonth = date("M", strtotime($value));
    $theYear  = date("Y", strtotime($value));

    $sql = "SELECT `c_ID`, `department`, `departmentSub`,  `todaysDate`, \n" . "SUM(CASE WHEN department='$dept' AND  departmentSub LIKE 'Loading Error' AND MONTH(todaysDate) = MONTH($value) AND YEAR(todaysDate) = YEAR($value) THEN 1 ELSE 0 END) AS loadingErrors,\n" . "SUM(CASE WHEN department='$dept' AND  departmentSub LIKE 'Bad Customer Service' AND MONTH(todaysDate) = MONTH($value) AND YEAR(todaysDate) = YEAR($value) THEN 1 ELSE 0 END) AS custService\n" . "FROM `nonConformance`";


    if ($result = mysqli_query($conn, $sql)) {
        // Return the number of rows in result set
        while ($row = $result->fetch_assoc()) {
            $loadingErrors = $row['loadingErrors'];
            $custService   = $row['custService'];
        }

    }
}
?>

我不知道为什么这没有返回任何结果,任何人都可以帮我解决这个问题,对此将不胜感激。

谢谢!

[示例数据] http://imgur.com/g0UzcpR

在查询中,您没有将$value作为字符串传递。 尝试用撇号将$value括起来:

 $sql = "SELECT `c_ID`, `department`, `departmentSub`,  `todaysDate`, \n" . "SUM(CASE WHEN department='$dept' AND  departmentSub LIKE 'Loading Error' AND MONTH(todaysDate) = MONTH('$value') AND YEAR(todaysDate) = YEAR('$value') THEN 1 ELSE 0 END) AS loadingErrors,\n" . "SUM(CASE WHEN department='$dept' AND  departmentSub LIKE 'Bad Customer Service' AND MONTH(todaysDate) = MONTH('$value') AND YEAR(todaysDate) = YEAR('$value') THEN 1 ELSE 0 END) AS custService\n" . "FROM `nonConformance`";

MONTH($value)变成MONTH('$value')YEAR($value)变成YEAR('$value')

另外,请确保在foreach ($months as $month => $value) {循环内输出$loadingErrors$custServiceforeach ($months as $month => $value) { ,否则具有零值的日期将覆盖前一个值。

您是否在查询中尝试过此方法?

更换

    departmentSub LIKE 'Loading Error'

    departmentSub = 'Loading Error'

要么

    departmentSub LIKE '%Loading Error%'

如果您要查找确切的字符串值,为什么要使用LIKE?

暂无
暂无

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

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