首页 > 解决方案 > MySQL Query 在 Workbench 中完美运行,我的 php 仪表板没有返回任何值?

问题描述

给你一个奇怪的...

我有一个仪表板,它显示来自 BMS 系统的数据,它是用 php、html 和 css 编写的,带有一些 java 的飞溅。我有一个 MySQL 查询,我可以在 MySQL 工作台中运行它并返回预期的结果。但是,当我从我的网页运行相同的 MySQLi 查询时,没有返回值?该表称为:- currentValues,其中包含 BMS 值的列称为:- currentValue,再次不受我的控制 [由 BMS 供应商设计] referencePath 是包含 BMS 端点的列。数据库被选为我的 $conn 字符串...

这是我的 MySQL Workbench 查询:

SELECT SUBSTRING(currentValue, 1, 3) FROM currentValues WHERE referencePath LIKE '%CO2_Level'

这是我的网页查询:

$sql = "SELECT SUBSTRING(currentValue, 1, 3) FROM currentValues WHERE referencePath LIKE '%CO2_Level'";
        $result = $conn->query($sql);
                $row = mysql_fetch_object($result);
                echo "<h1>" . $row . " PPM</h1>";

我使用 SUBSTRING 的原因是因为该值有 4 个小数位,并且该列是一个 VARCHAR [我无法更改],我只想要整数 [嗯,从技术上讲,它是一个字符串]。

我也尝试过 SUBSTRING -> LEFT(currentValue, 3) 的替代方法,但它的行为方式相同吗?任何建议都会受到极大的欢迎!!!

编辑...

但是,如果我使用没有 SUBSTRING() 的查询

$sql = "SELECT * FROM currentValues WHERE referencePath LIKE '%CO2_Level'";
        $result = $conn->query($sql);
                $row = mysql_fetch_object($result);    
                echo "<h1>" . $row["currentValue"] . " PPM</h1>";

一切都按预期工作,除了我的仪表板中有一个愚蠢的值,比如 627.1498 PPM

解决方法

此问题已作为不相关问题的重复项关闭,因此我无法将其发布为答案。虽然它确实是一种解决方法而不是上述问题的答案,但可能对其他人有帮助,我只是使用 php 运算符 ROUND 对 MySql 查询中返回的值进行四舍五入。

echo "<h1>" . round($row["currentValue"]) . "PPM</h1>";

标签: phpmysql

解决方案


SUBSTRING(currentValue, 1, 3)在选择中使用,所以它会给SUBSTRING(currentValue, 1, 3)您结果。

您可以通过 $row->SUBSTRING(currentValue, 1, 3) 来使用它。

但是,您应该为它使用别名。

尝试 -

$sql = "SELECT SUBSTRING(currentValue, 1, 3) AS curr_value FROM currentValues WHERE referencePath LIKE '%CO2_Level'";
$result = $conn->query($sql);
$row = mysql_fetch_object($result);    
echo "<h1>" . $row->curr_value . " PPM</h1>";

推荐阅读