PHP mysql_fetch_object,所有属性都是字符串?

时间:2013-05-17 17:41:37

标签: php mysql json

有人可以帮忙吗?

mysql_fetch_object将所有属性作为类型字符串返回。 我需要将对象转换为JSON,但保留数值和布尔值。

解析所有查询的结果JSON非常慢。 这是我查询var_dump的结果。

$obj = mysql_fetch_object($result)
var_dump($obj);
...
object(stdClass)[10]
public 'idUsuario' => string '1' (length=1)
public 'Email' => string 'user@theemail.com.ar' (length=23)
public 'Password' => string '1234' (length=4)
public 'Nombre' => string 'Sebastián' (length=10)
public 'Apellido' => string 'Black' (length=7)
public 'Habilitado' => string '1' (length=1)
...

'Habilitado'属性在DataBase中是BOOLEAN(我已尝试使用BIT数据类型,但结果相同)。

然后JSON与json_encode:

{"DTOList":
{"idUsuario":"1",
"Email":"user@theemail.com.ar",
"Password":"1234","Nombre":"Sebasti\u00e1n","Apellido":"Black","Habilitado":"1"...

2 个答案:

答案 0 :(得分:2)

这是正确的。 MySQL将所有内容作为字符串返回,但NULL除外,它按原样传递。

需要注意的另一点是,BOOLEAN只是TINYINT(1)的别名,其中0FALSE,其他所有值均为TRUE

答案 1 :(得分:1)

虽然我在PDO中使用了FETCH_ASSOC而不是FETCH_OBJ,但我遇到了类似的问题。 您可以“强制转换”(提示)字段,它们将按照您的期望在JSON中显示。在您的示例中,这可能有效(将其放在json_encode之前):

$obj->idUsuario = (int) $obj->idUsuario;
$obj->Habilitado = (bool) $obj->Habilitado;