Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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 在单个字段中插入数字_Php_Mysql_Integer - Fatal编程技术网

Php 在单个字段中插入数字

Php 在单个字段中插入数字,php,mysql,integer,Php,Mysql,Integer,我试图在MySQL字段中插入不同的数字(如“10 11 12”)(数字来自PHP),但当我进行查询时,该字段只会得到第一个数字 例如,我: UPDATE profile SET subcategory = '10 11 12' WHERE userId = 1 LIMIT 1 数据库只注册了“10” 有什么办法吗?根据您的问题,我猜您的子类别的类型是整数。当你放绳子时会发生什么?它被转换了。转换器将其转换为第一个正确的整数,即10之后的10个空格被视为字符串 什么能解决你的问题 机会数据库结构

我试图在MySQL字段中插入不同的数字(如“10 11 12”)(数字来自PHP),但当我进行查询时,该字段只会得到第一个数字

例如,我:

UPDATE profile SET subcategory = '10 11 12' WHERE userId = 1 LIMIT 1
数据库只注册了“10”


有什么办法吗?

根据您的问题,我猜您的子类别的类型是整数。当你放绳子时会发生什么?它被转换了。转换器将其转换为第一个正确的整数,即10之后的10个空格被视为字符串

什么能解决你的问题

  • 机会数据库结构和依赖关系
  • (坏主意)例如,将类型更改为varchar,然后将完成插入(不要这样做)
  • 进行多次更新(这实际上取决于数据库结构)

  • 根据你的问题,我猜你的子类别的类型是整数。当你放绳子时会发生什么?它被转换了。转换器将其转换为第一个正确的整数,即10之后的10个空格被视为字符串

    什么能解决你的问题

  • 机会数据库结构和依赖关系
  • (坏主意)例如,将类型更改为varchar,然后将完成插入(不要这样做)
  • 进行多次更新(这实际上取决于数据库结构)

  • 这在很大程度上取决于您试图解决的问题

    如果您只是尝试存储少量的数字,那么可以使用php join和split函数获取数字列表,并将其转换为字符串和从字符串转换为字符串,然后将其存储在VARCHAR中

    解决此问题的更好方法是了解数据的布局。尝试创建一个将配置文件链接到子类别的表。两列,一列用于配置文件ID,另一列用于子类别ID。您可能会发现搜索数据库规范化提供了信息


    此演示文稿的内容相对丰富:

    这在很大程度上取决于您试图解决的问题

    如果您只是尝试存储少量的数字,那么可以使用php join和split函数获取数字列表,并将其转换为字符串和从字符串转换为字符串,然后将其存储在VARCHAR中

    解决此问题的更好方法是了解数据的布局。尝试创建一个将配置文件链接到子类别的表。两列,一列用于配置文件ID,另一列用于子类别ID。您可能会发现搜索数据库规范化提供了信息


    此演示看起来信息相对丰富:

    发生这种情况是因为您正在更新一个数字,可能是一个整数,所以mysql只针对第一个数字执行此操作

    如果您这样做:

    UPDATE profile SET subcategory = 10 WHERE userId = 1 LIMIT 1
    UPDATE profile SET subcategory = 11 WHERE userId = 1 LIMIT 1
    UPDATE profile SET subcategory = 12 WHERE userId = 1 LIMIT 1
    
    您只需使用第三个值(12)更新类别

    我建议您选择一个属于多个子类别的用户,因此您必须创建另一个表。例如:一个名为subcategories的表,至少有两个字段:userId和subcategorid。然后你可以这样做:

    DELETE FROM subcategories WHERE userId=1
    INSERT INTO subcategories (userId, subcategory) VALUES (1,10)
    INSERT INTO subcategories (userId, subcategory) VALUES (1,11)
    INSERT INTO subcategories (userId, subcategory) VALUES (1,12)
    
    第一行(删除)仅用于更新用户的子类别,首先删除用户的所有旧子类别,然后插入新子类别。在PHP中,可以使用foreach()自动插入多个值

    在表概要文件中还可以有一个非唯一的userId,该userId具有“每个用户”子类别的条目,但这会使事情复杂化


    我希望它能帮助您实现这一点,因为您正在更新一个数字,可能是一个整数,所以mysql只需更新第一个数字即可

    如果您这样做:

    UPDATE profile SET subcategory = 10 WHERE userId = 1 LIMIT 1
    UPDATE profile SET subcategory = 11 WHERE userId = 1 LIMIT 1
    UPDATE profile SET subcategory = 12 WHERE userId = 1 LIMIT 1
    
    您只需使用第三个值(12)更新类别

    我建议您选择一个属于多个子类别的用户,因此您必须创建另一个表。例如:一个名为subcategories的表,至少有两个字段:userId和subcategorid。然后你可以这样做:

    DELETE FROM subcategories WHERE userId=1
    INSERT INTO subcategories (userId, subcategory) VALUES (1,10)
    INSERT INTO subcategories (userId, subcategory) VALUES (1,11)
    INSERT INTO subcategories (userId, subcategory) VALUES (1,12)
    
    第一行(删除)仅用于更新用户的子类别,首先删除用户的所有旧子类别,然后插入新子类别。在PHP中,可以使用foreach()自动插入多个值

    在表概要文件中还可以有一个非唯一的userId,该userId具有“每个用户”子类别的条目,但这会使事情复杂化


    我希望它能帮助您

    这听起来像是个XY问题。请告诉我们关于X。了解加入。你需要另一张桌子。这块地有多大?看起来可能会被截断?如果子类别是int类型,那么它将被转换为int,因此第一个适当的int(10)将被放到表中。我不知道还有什么更糟糕,人们建议更改字段长度或字段类型。很明显,这是一个糟糕的数据库设计。如果将多个子类别指定给一个配置文件,则可以插入更多行,每行都是链接到同一配置文件\u id/用户\u id或其他内容的子类别\u id。这些是基础。至于走坏路,那是个人的选择。而那些建议增加字段长度/类型的家伙只是证明了,当所有的新手都能获得它时,在这个网站上的声誉毫无意义。这听起来像是个XY问题。请告诉我们关于X。了解加入。你需要另一张桌子。这块地有多大?看起来可能会被截断?如果子类别是int类型,那么它将被转换为int,因此第一个适当的int(10)将被放到表中。我不知道还有什么更糟糕,人们建议更改字段长度或字段类型。很明显,这是一个糟糕的数据库设计。如果将多个子类别指定给一个配置文件,则可以插入更多行,每行都是链接到同一配置文件\u id/用户\u id或其他内容的子类别\u id。这些是基础。至于走坏路,那是个人的选择。而那些建议增加字段长度/类型的家伙只是证明,当所有新手都能获得声誉时,这个网站上的声誉毫无意义。