Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Mysql 如何使用Codeigniter从多语言站点的数据库中读取不同的条目?_Mysql_Database_Codeigniter_Multilingual - Fatal编程技术网

Mysql 如何使用Codeigniter从多语言站点的数据库中读取不同的条目?

Mysql 如何使用Codeigniter从多语言站点的数据库中读取不同的条目?,mysql,database,codeigniter,multilingual,Mysql,Database,Codeigniter,Multilingual,我找不到这个问题的答案。。。我正在制作一个基于Codeigniter和MySQL数据库的多语言网站。对于静态语言文本,我使用内置的lang函数,并根据URL/en//fr/…的第一段。。。我正在加载相应的语言文件,但是如何从数据库加载和显示相应的数据呢?我如何将数据保存在数据库中?我有产品表,一半的条目是数值,但另一半是文本,应该用2或3种语言保存 我有我的逻辑保持名称和名称,描述和描述。。。所有这些都在同一个表中,因此我将在添加新语言时将这些行加倍。 当我进行Select查询时,我将把段“en

我找不到这个问题的答案。。。我正在制作一个基于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());
    }

这是比我指出的更优化的解决方案吗?实际上,我在第二个表中保留的行数与我在网站上保留的语言数一样多?我认为必须在表列中使用变量值。不在表名中。这不是一个好的未来战略。