我目前正在与其他人一起开展语言项目,我正在使用一个语言的数据库,但我们也有翻译,最好的方法是将这些单词包含在一列中。所以现在我们有(语言)(英语)(德语)(荷兰语)。问题是有些单词可以用多个单词翻译,所以对于英语,你会得到如下的翻译:
好,健康我的问题是,我想避免为一个单词的一个单词的更多不同翻译创建一个新的(英语2)专栏,而不是将它们全部放在一个页面,但我怎么能确保如果人们寻找的东西,我也可以让代码区分逗号之前和之后的单词?因此,如果你寻找“健康”,你可以找到主要的词,而不仅仅是你输入'好,健康',没有人会做。我对PHP有一定的了解,但是使用字符串对我来说非常困难,我仍然不知道怎么做。
答案 0 :(得分:0)
我不知道你在哪里存储这些数据,但我会假设一个MySQL数据库或你有类似控制权的东西。
你真的应该简单地使用两个表,一个用于存储单词和与之关联的ID,另一个表用于存储这些单词的翻译。
words
ID INT
Word VARCHAR(32)
translations
ID INT
Lang ENUM('ENGLISH', 'GERMAN', 'FRENCH')
Translation VARCHAR(32)
在PHP中,您可以进行如下查询:
SELECT `Word`, `Translation`
FROM `words`
LEFT JOIN `translations` ON (`translations`.`ID` = `words`.`ID` AND `Lang`='FRENCH')
WHERE `Word` = 'Funky'
此查询将返回单词和翻译(如果可用),如果没有可用的翻译,则返回NULL。
答案 1 :(得分:0)
拥有像这样的数据库结构不会很好:
WORD ENGLISH GERMAN DUTCH
-----------------------------------------------------------------------------
well good <any Dutch/German translation or can be null>
well healthy <any Dutch/German translation or can be null>
然后,当您想查询well
的翻译时,您可以
SELECT word, GROUP_CONCAT(english) as "English Translations" FROM myTable WHERE word='well'
然后它将导致:
word English Translations
----------------------------------------------
well good,healthy
答案 2 :(得分:0)
我找到了解决方案!感谢Aziz,我可以在他提到的问题中找到函数FIND_IN_SET,这样我通过让MySQL查找逗号分隔的值来解决问题。