我有一个多语言的网站,并使用该工具来获取用户使用的语言:使用if/else语句中的SQL查询
$languagestring = array();
$res1 = "SELECT id, text FROM ".$prefix."_language WHERE lang = 'en' ORDER BY id ASC";
if($result1 = $mysqli->query($res1)){
while($row1 = $result1->fetch_object()){
$langid = $row1->id;
$res = "SELECT text FROM ".$prefix."_language WHERE fk_id = $langid AND lang = '$language'";
if($result = $mysqli->query($res)){
$row = $result->fetch_object();
if(!$row){
$languagestring[] = $row1->text;
} else {
$str = $row->text;
$languagestring[] = $str;
}
}
}
}
在这个剧本我第一次得到了默认的英语,然后我检查查看用户偏好的语言是否有匹配英文字符串的字符串。这种方式很有魅力,但执行时间很长。是否有可能将这两个查询合并为一个,如果是的话......如何?
$res1 = "SELECT t1.text as etext, t2.text
FROM ".$prefix."_language t1 LEFT JOIN ".$prefix."_language t2 ON t2.fk_id = t1.id AND lang = 'da'";
if($result1 = $mysqli->query($res1)){
while($row1 = $result1->fetch_object()){
$row1->text.'<br>';
}
}
它不reurn任何结果:
在此先感谢;-)
########编辑没有运气尝试这样做?
这不会是导致大部分长时间执行的原因,而只是选择所需的列而不是所有的'*'都会节省一些时间。 – 2013-02-18 10:53:11
我认为你的查询很小,不能慢!你创建了你的表的任何索引?有可能是错的! – 2013-02-18 10:57:47
我已经索引了lang,fk_id并且仍然能够执行超过3秒的执行时间? – Mansa 2013-02-18 11:16:53