Mysql 如何使用Codeigniter从多语言站点的数据库中读取不同的条目?
我找不到这个问题的答案。。。我正在制作一个基于Codeigniter和MySQL数据库的多语言网站。对于静态语言文本,我使用内置的lang函数,并根据URL/en//fr/…的第一段。。。我正在加载相应的语言文件,但是如何从数据库加载和显示相应的数据呢?我如何将数据保存在数据库中?我有产品表,一半的条目是数值,但另一半是文本,应该用2或3种语言保存 我有我的逻辑保持名称和名称,描述和描述。。。所有这些都在同一个表中,因此我将在添加新语言时将这些行加倍。 当我进行Select查询时,我将把段“en”传递给查询,并在名称或描述的结尾处凹形,这样它将成为名称、描述或类别Mysql 如何使用Codeigniter从多语言站点的数据库中读取不同的条目?,mysql,database,codeigniter,multilingual,Mysql,Database,Codeigniter,Multilingual,我找不到这个问题的答案。。。我正在制作一个基于Codeigniter和MySQL数据库的多语言网站。对于静态语言文本,我使用内置的lang函数,并根据URL/en//fr/…的第一段。。。我正在加载相应的语言文件,但是如何从数据库加载和显示相应的数据呢?我如何将数据保存在数据库中?我有产品表,一半的条目是数值,但另一半是文本,应该用2或3种语言保存 我有我的逻辑保持名称和名称,描述和描述。。。所有这些都在同一个表中,因此我将在添加新语言时将这些行加倍。 当我进行Select查询时,我将把段“en
我希望有更好的方法,你们中一些已经使用过这种方法的人将帮助我度过难关。我使用双表支持多语言。第一个表包含项字段。例如日期、投票等。语言字段的第二个表
CREATE TABLE `item` (
`item_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`nested_category_id` int(11) DEFAULT NULL,
`image_file` varchar(100) NOT NULL,
`date` varchar(0) DEFAULT NULL,
PRIMARY KEY (`item_id`)
);
CREATE TABLE `item_lang` (
`item_lang_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`lang_id` varchar(2) NOT NULL,
`item_id` int(11) unsigned NOT NULL,
`url_name` varchar(255) NOT NULL DEFAULT '',
`meta_title` varchar(255) DEFAULT NULL,
`meta_description` text,
`meta_keywords` varchar(255) DEFAULT NULL,
`name` varchar(255) NOT NULL,
`title` varchar(255) DEFAULT NULL,
`description` text,
PRIMARY KEY (`item_lang_id`)
);
如果你需要划船,试试这样
function get_row( $id, $lg='tr'){
$arr = array($id, $lg);
$sql = " SELECT ".$this->_table.".*, ".$this->_table_lang.".*
FROM ".$this->_table."
LEFT JOIN ".$this->_table_lang."
ON ".$this->_table.".".$this->_table."_id = ".$this->_table_lang.".".$this->_table."_id
WHERE ".$this->_table.".".$this->_table."_id = ?
AND ".$this->_table_lang.".lang_id=?";
$data = $this->db->query($sql, $arr);
return ($data->row());
}
这是比我指出的更优化的解决方案吗?实际上,我在第二个表中保留的行数与我在网站上保留的语言数一样多?我认为必须在表列中使用变量值。不在表名中。这不是一个好的未来战略。