Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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 MYSQL逗号分隔列表,可以添加和删除值吗?_Php_Mysql - Fatal编程技术网

Php MYSQL逗号分隔列表,可以添加和删除值吗?

Php MYSQL逗号分隔列表,可以添加和删除值吗?,php,mysql,Php,Mysql,我有一个逗号分隔的列表,我将它存储在mysql表的varchar字段中 是否可以使用sql查询直接从列表中添加和删除值?或者我必须从表中取出数据,在PHP中进行操作并将其替换回mysql吗?在mysql的InnoDB和MyIsam引擎中无法做到这一点。可能在其他引擎中(请检查CSV引擎)。 您可以在存储过程中执行此操作,但不推荐这样做。 要解决这样的问题,您应该做的是重构代码并规范化DB=> 原始表格 T1: id | data | some_other_d

我有一个逗号分隔的列表,我将它存储在mysql表的varchar字段中


是否可以使用sql查询直接从列表中添加和删除值?或者我必须从表中取出数据,在PHP中进行操作并将其替换回mysql吗?

在mysql的InnoDB和MyIsam引擎中无法做到这一点。可能在其他引擎中(请检查CSV引擎)。
您可以在存储过程中执行此操作,但不推荐这样做。
要解决这样的问题,您应该做的是重构代码并规范化DB=>
原始表格

T1: id | data                    | some_other_data
     1 |  gg,jj,ss,ee,tt,hh      |   abanibi
成为:

T1: id | some_other_data
     1 |   abanibi

T2: id   |  t1_id    |   data_piece
     1   |    1      |      gg 
     2   |    1      |      jj 
     3   |    1      |      ss 
     4   |    1      |      ee
     5   |    1      |      tt
     6   |    1      |      hh 
如果数据块在系统中是一个常数值,并且被大量重用,那么您也需要在那里添加一个查找表


我知道这看起来需要更多的工作,但它会像现在一样为您节省问题,而这些问题需要更多的时间来解决。

现在您了解了规范化的重要性。您在做什么-您是否正在尝试编写自己的小数据库。。。在SQL中,您能否更具体地说明如何操作此字符串?是否确实需要将字符串存储到此表中?这是一种非常糟糕的做法,除非你正在做一些像预计算信息这样的事情,而你不能为用户实时地做这些事情