我有一个基于 PHP/MySQL 的 Web 应用程序,它通过一个名为 , 和字段的 MySQL 表来language_strings
支持string_id
国际化lang_id
。lang_text
当我需要以所选语言显示字符串时,我调用以下函数:
public function get_lang_string($string_id, $lang_id)
{
$db = new Database();
$sql = sprintf('SELECT lang_string FROM language_strings WHERE lang_id IN (1, %s) AND string_id=%s ORDER BY lang_id DESC LIMIT 1', $db->escape($lang_id, 'int'), $db->escape($string_id, 'int'));
$row = $db->query_first($sql);
return $row['lang_string'];
}
这非常有效,但我担心可能会有很多数据库查询正在进行。例如,主菜单有 5 个链接文本,它们都调用了这个函数。
将所选的整个language_strings
表结果加载lang_id
到 PHP 数组中然后从函数中调用它会更快吗?这可能是一个巨大的数组,其中大部分是冗余的,但显然每个页面加载一个数据库查询而不是很多。
任何人都可以提出另一种更有效的方法吗?