2015-03-30 87 views
1

我一直在试图添加一些自定义字段到我的osCommerce 2.3安装。这些字段(products_lot, products_location, products_serial_number, products_note)都应该显示,他们都从我的数据库中的products_description表中拉出。我正在迁移已具有这些行的数据库,并且每个字段都显示(拉出)字段值,完全如我所料。自定义字段不保存到MySQL

然而,当我尝试保存新值或更新现有的产品到这些行,它将引发1054错误:1054 - Unknown column 'products_lot' in 'field list'

如果我提出这些字段的tep_db_prepare_input()部成不同的阵列product_description,所述不会引发错误,但实际上没有任何值会保存到数据库中。它要么截断这些领域,要么保存以前没有数据的地方。例如,将“5”添加到产品位置:在数据库中是一个很大的零。

TL; DR 它拉动信息很好,但它没有保存所有,我不知道为什么。 。 。

这里是categories.php文件我的工作,以创建和存储这些领域:

http://pastebin.com/raw.php?i=wHrddQyq

所有的MySQL列被命名为匹配,所以products_description表有products_lot

+0

好了,所以我想* *我固定它: '[$ LANGUAGE_ID]'上线264 是导致其古怪行为。它会删除条目并保存不正确。任何人都可以向我解释为什么会这样?我会冒险说它和我的行编码有关。 – LukePatrick 2015-03-30 19:43:54

回答

3

如果您的自定义字段位于products表中,则该表中的行不会为每个语言ID存储。 products_description表包含每个语言ID的行。

您自定义字段的代码位于products表中插入/更新的$ sql_data_array中。如果您的自定义字段每种语言不同,它们存储在products_description表,您需要将这些字段移动到$ sql_data_array的

for ($i=0, $n=sizeof($languages); $i<$n; $i++) { 

循环中。否则,$ language_id将是未定义的。

+0

完美!感谢您的解释,这使得现在更有意义。说实话,我应该看到这一点。我正在移植很多旧的代码,只是没有抓住它。 – LukePatrick 2015-03-31 02:17:48