将数字插入单个字段MySQL

时间:2013-10-01 13:23:13

标签: php mysql integer

我正在尝试将不同的数字(例如“10 11 12”)插入到MySQL字段中(数字来自PHP),但是当我执行查询时,该字段只获取第一个数字。

例如,我这样做:

UPDATE profile SET subcategory = '10 11 12' WHERE userId = 1 LIMIT 1

DB刚刚注册'10'。

有什么办法吗?

3 个答案:

答案 0 :(得分:3)

这是因为你正在更新一个数字,可能是一个整数,所以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)更新类别。

我建议您使用属于多个子类别的用户,这样您就必须创建另一个表。例如:一个名为子类别的表,至少包含两个字段:userId和subcategoryId。然后你可以做这样的事情:

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,每个用户子类别都有一个条目,但这会使事情变得复杂。

我希望它可以帮到你

答案 1 :(得分:0)

从你的问题我猜你的子类别的类型是整数。放字符串会发生什么?它被转换。转换器将其转换为第一个适当的整数,10后的10个空格被视为字符串。

什么可以解决您的问题?

  1. 机会数据库结构并依赖于关系。
  2. (坏主意)将类型更改为varchar,然后插入将完成(不要做)
  3. 进行多次更新(实际上取决于数据库结构)

答案 2 :(得分:0)

这在很大程度上取决于您要解决的问题。

如果您只是想存储少量数字,那么使用php join和split函数来获取数字列表并转换为字符串并将其存储在VARCHAR中。

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

此演示文稿看起来相对丰富:http://www.sqa.org.uk/e-learning/MDBS01CD/page_26.htm