MySQL的 - bigints,PHP和汽车串/ INT铸造倒装假摔(MySql - bigin

2019-10-28 23:19发布

我问一个问题关于bigints昨日这是善意的回答。 不过,我一直在观察了一些奇怪的行为,并想明白是怎么回事。

在我的PHP我有我送回到它使用它一个JavaScript的Web客户端程序的数组。

在PHP

    sendBack = null;
    sendBack[0]['TimeStamp'] = $Time; // A bigint got from a mysql table milliseconds from 1970
    sendBack[0]['Text'] = $Message; // A varchar message got back from mysql
    // I am guessing at this point you have worked out this is a text-chatroom thing going on
    sendBack[1]['TimeStamp'] = 0; // A zero indicates an admin issue - note its an int but a small one
    sendBack[1]['Text'] = $MessageAdmin;

    // And I pack it up to send back
    echo json_encode($sendBack);

在JS我解开它的使用方法:

    var json = eval('(' + data + ')');

问题是,在JS的0索引时间戳被当作字符串,但索引1时间戳被视为一个int。

从教育观点没有人知道是怎么回事?

Answer 1:

我相信从PHP数据库返回的值始终为字符串。 为了转换您的零指数戳你需要做的是这样的:

sendBack[0]['TimeStamp'] = parseInt($Time, 10);

这将其转换为一个整数值(底为10)。

显然,1-索引时间戳被设置为零,因此直接它返回作为int的原因。



文章来源: MySql - bigints, php and auto string/int casting flip-flopping