mySQL到PHP到jQuery以字符串形式返回浮点值(JSON)

mySQL到PHP到jQuery以字符串形式返回浮点值(JSON),php,jquery,mysql,json,floating-point,Php,Jquery,Mysql,Json,Floating Point,我不熟悉PHP、jQuery和SQL,我正在尝试从数据库返回数据,以便在javascript文件中使用。出于某种原因,我的对象将作为字符串返回,即使值应该是浮点数 我的数据库结构将此列设置为浮点数 以下是我的PHP代码的一部分: $q = "SELECT object FROM $tableName"; if($q === FALSE) { die(mysql_error()); } $sth = mysqli_query ($con, $q); $rows = array();

我不熟悉PHP、jQuery和SQL,我正在尝试从数据库返回数据,以便在javascript文件中使用。出于某种原因,我的对象将作为字符串返回,即使值应该是浮点数

我的数据库结构将此列设置为浮点数

以下是我的PHP代码的一部分:

$q = "SELECT object FROM $tableName";

if($q === FALSE) { 
    die(mysql_error());
}

$sth = mysqli_query ($con, $q);
$rows = array();
while($r = mysqli_fetch_assoc($sth)) {
    $rows[] = $r;
    }

print json_encode($rows);
下面是我的javascript:

$.get('PHP file URL', function(data) {

    var object = JSON.parse(data);
但是,我将返回以下(字符串)而不是浮点数:

[{"object":"34.416"},{"object":"34.589"},{"object":"33.3948"}]
我似乎找不到同样的问题已经张贴。请让我知道我做错了什么。谢谢

你有两个选择

$q = "SELECT object FROM $tableName";

if($q === FALSE) { 
    die(mysql_error());
}

$sth = mysqli_query ($con, $q);
$rows = array();
while($r = mysqli_fetch_assoc($sth)) {
    $rows[] = array('object'=> (float)$r['object'];
    }

print json_encode($rows);
或者在jquery中

$.get('PHP file URL', function(data) {
    var object = [];
    $.each(data, function(){
         object.push(parseFloat(this.object))
    });

    var object = JSON.parse(data);

来自MySQL的所有内容都是字符串类型。您希望在编码到json之前强制转换为浮点。我尝试在SQL SELECT语句中强制转换为浮点,但这只在PHP中的mysql\u fetch\u assoc行中出现错误。你是说我应该在javascript中强制转换为float吗?当你迭代结果集时,你应该在php中强制转换。好的,太好了。我会研究一下,看看我能做些什么。谢谢我一定是做错了什么,因为我无法让jquery版本工作,但PHP版本确实工作了,这可能更有效。谢谢接下来的问题是:如果我想从数据库中选择多个列,该怎么办?因为我正在定义要在$rows[]=数组('object'=>(float)$r['object']中转换的列;行,它只转换该列。我尝试添加另一行,但它给该列的值为0。有什么想法吗?我想出来了。我会将其添加到您的答案中。不确定为什么我对答案的改进不被批准发布。以下是转换一个JSON对象中多个列的完整答案:$rows[]=array('object01'=>(浮动)$r['object01'],'object02'=>(浮动)$r['object02']);