Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
phpmysql-存储时间和时间的数据类型;使用mysql在1列中的状态?_Php_Sql_Phpmyadmin - Fatal编程技术网

phpmysql-存储时间和时间的数据类型;使用mysql在1列中的状态?

phpmysql-存储时间和时间的数据类型;使用mysql在1列中的状态?,php,sql,phpmyadmin,Php,Sql,Phpmyadmin,Helo伙计们我有这个表格的样本数据 目前存储的最佳数据类型是什么?在时间列上,我需要能够存储像DQ、DNS和DNF这样的术语 注意:(DQ=不合格,DNS=未启动,DNF=未完成) 您可以像这样存储数据,依靠JSON将时间和状态存储在一列中 要从PHP数据数组中创建此数据(例如,如果您希望提取当前数据,将其转换为JSON格式,并更新现有数据集),您可以这样做 $array = array("Athlete 1"=>array("time"=>"9.41", "status"=>

Helo伙计们我有这个表格的样本数据

目前存储的最佳数据类型是什么?在时间列上,我需要能够存储像DQ、DNS和DNF这样的术语

注意:(DQ=不合格,DNS=未启动,DNF=未完成)

您可以像这样存储数据,依靠JSON将时间和状态存储在一列中

要从PHP数据数组中创建此数据(例如,如果您希望提取当前数据,将其转换为JSON格式,并更新现有数据集),您可以这样做

$array = array("Athlete 1"=>array("time"=>"9.41", "status"=>"DQ"),"Athlete 2"=>array("time"=>"0.00", "status"=>"DNS")); 
foreach($array as $athlete=>$data){
 $json = json_encode($data); // encode their specific data
 // insert json data string into athlete time/status cell 
}
或者

然后您将从数据库中取出它,并使用PHP解析它

$data = json_decode($json, true); 
$time = $data['time'];
$status = $data['status']; 
我个人认为你应该把时间储存在一列,把状态储存在另一列。这样做更有意义。如果您不能做到这一点,那么将数据存储在JSON中将允许您的数据库执行您希望它执行的操作,并且可以被访问该数据的大量不同语言使用

也可以做

$time = 9.41;
$status = "DQ";
$data = "$time|$status";
这将成为一个字符串。。。“9.41 | DQ”

将其存储在数据库中,然后在取出时

$data = "9.41|DQ"; // (taken from database result)
list($time, $status) = explode("|", $data); // split time & status
// that's it, now you have time & status variables for that cell! 
还有,这里有一些合理的专栏想法


您可以使用秒或毫秒。。。然后编码

DNS = nil 
DFN = 0xFFFFFFFF
DQ  = 0xFFFFFFFE
这样的话,DNF和DQ会一直排到最后


您只需要确保在显示时不会将这些高值转换为时间。

所以我的理解是,您希望将它们从存储在单独的表中更改为一个表中的一列。使用VARCHAR。VARCHAR用于存储各种字符,而不仅仅是字母。不能以时间或浮点列数据类型存储字母,因此,如果必须将它们存储为一个表中的一列,则这些不是选项str(datetime.timedelta(seconds=103.42))No-sir的操作,我希望将它们保存在单独的表中,作为一个表中的一列进行查看。但我需要像dq、dns、dnf一样将时间和术语存储在同一列中,就像时间一样。我无法将dns存储到time列,因为数据类型为time。视图表的数据类型应为VARCHAR。我对创建视图表不太了解,但是如果视图表中的列必须包含字母和数字,那么我之前所说的仍然适用于视图表列。
$data = "9.41|DQ"; // (taken from database result)
list($time, $status) = explode("|", $data); // split time & status
// that's it, now you have time & status variables for that cell! 
id (auto increment, integer, primary key), 
tournament (varchar 255), 
event (int 11), 
event_name (varchar 255), 
heat (int 11), 
heat_desc (varchar 255-male/female/etc), 
athlete_name (varchar 50), 
time (varchar 15) ~ so float can't mess up decimal places, 
status (varchar 5 - for dq/dns/dnf), 
lane (int 11)
DNS = nil 
DFN = 0xFFFFFFFF
DQ  = 0xFFFFFFFE