我正在制作Flash游戏。从游戏我得到数据到PHP,我需要将它插入数据库。所以我得到格式为0:00.000 [分钟:秒。微秒]的时间值。如何成功将其插入数据库?我的SQL表的类型是时间。格式为00:00:00 [小时:分钟:秒]。
问题是,如果我从游戏11秒279微秒(从游戏格式0:11.279)获得时间它到数据库只插入11分钟[00:11:00]。
如何插入数据库正常格式[minutes:seconds.micro-seconds]?
我的代码如下:
<?php
$time= $_POST['time'];
$username = $_POST['userName'];
$mysqli = new mysqli("localhost","asd","asd","asd");
if ($stmt = $mysqli->prepare("INSERT into myTable (time, userName) VALUE (?,?) ")) {
if (!$mysqli->set_charset("utf8")) {
printf("Error loading character set utf8: %s\n", $mysqli->error);
}
$stmt->bind_param('ss', $time, $name);
$stmt->execute();
if ($stmt->error != '') {
echo ' error:'.$stmt->error;
} else {
echo 'success';
}
$stmt->close();
} else {
echo 'error:'.$mysqli->error;
}
$mysqli->close();
更新
我的时间列在数据库中的样子:
答案 0 :(得分:1)
您应该使用
创建具有微秒的时间列TIME(number of decimals)
您可以在http://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html
找到更多信息编辑: 正如我在评论中提到的那样,您可以将其存储为十进制并编辑输入和输出。 这是一个例子。
$initial_value='11:02.234';
$exploded = explode(':',$initial_value);
$to_insert = $exploded[0]*60+$exploded[1];
echo "value to insert $to_insert";
要将mysql十进制输出转换为您的格式,请使用:
$value_from_the_db ='234.123';
$tmp = floor($value_from_the_db/60);
$to_print = $tmp .':' . (($value_from_the_db-$tmp * 60)>10?($value_from_the_db-$tmp * 60):'0'.($value_from_the_db-$tmp * 60));
echo "Value to show = $to_print";