Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.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
Php 我应该使用serialize来存储可用性时间吗?_Php_Mysql - Fatal编程技术网

Php 我应该使用serialize来存储可用性时间吗?

Php 我应该使用serialize来存储可用性时间吗?,php,mysql,Php,Mysql,我有一个网站,要求用户输入他们可以授课的天数和时间。例如,教授可以进入周一下午1:00至2:00以及周二下午2:00至4:00 目前,我正在使用serialize将数据存储在MySQL表中一个名为“availability”的列中。我将周一+1300+1400和周二+1400+1500进行序列化。然后我使用explode()提取星期一、1300、1400等 我觉得应该有更好的办法。每次学生想看到老师的情况时,我都需要提取这些信息,我认为目前的方法对此并不有效 您能告诉我一个更好的解决方案吗?您当

我有一个网站,要求用户输入他们可以授课的天数和时间。例如,教授可以进入周一下午1:00至2:00以及周二下午2:00至4:00

目前,我正在使用serialize将数据存储在MySQL表中一个名为“availability”的列中。我将周一+1300+1400和周二+1400+1500进行序列化。然后我使用explode()提取星期一、1300、1400等

我觉得应该有更好的办法。每次学生想看到老师的情况时,我都需要提取这些信息,我认为目前的方法对此并不有效


您能告诉我一个更好的解决方案吗?

您当前的解决方案不允许您根据数据库本身的可用性进行搜索。您需要获取序列化数据,反序列化然后检查它,这将非常昂贵

您应该做的是设置一个类似以下内容的表:

User_id | Day |开始|时间|结束|时间

现在,如果具有user_id的用户在周一下午2-3点和周五下午4-5点有空,请在此表中添加两个条目

1  |  Mon  |  1400  |  1500
1  |  Fri  |  1600  |  1700

现在,您可以轻松地在数据库本身上进行搜索、筛选、排序等。

安全性不是最高优先级吗?序列化如何提供任何形式的安全性?关系表绝对是数据库结构的最佳选择。然而,你也可以把老师的时间表写成更改时的纯文本,如果目标是最小化查询,那么只在特定搜索期间执行查找。假设一个用户在一天中有多个时间段,比如周一下午2-3点和4-5点。如果用户想要删除或更改他们下午2-3点的时间段,它将如何工作?如何识别该行?在表中添加另一列名为
Slot\u ID
或其他内容,并将其设置为PK和auto increment。这样,您就可以唯一地标识表中的每一行。