使用mysqli和php从数据库检索语言短语

使用mysqli和php从数据库检索语言短语,php,mysqli,Php,Mysqli,我有以下三个表格: 短语 PhraseID PhraseType Phrase 14 error regexNameError 15 error regexSurnameError 16 error regexEmailError PhraseLanguageID PhraseID LanguageID NativePhrase 4 14 1 Name must con

我有以下三个表格:

短语

PhraseID PhraseType Phrase
14       error      regexNameError
15       error      regexSurnameError
16       error      regexEmailError
PhraseLanguageID PhraseID LanguageID NativePhrase
4                14       1          Name must contain at least two characters, and may not contain numbers.
5                14       2          Nom doit contenir au moins deux caractères, et ne peut contenir que des chiffres.
6                14       3          Naam moet ten minste twee karakters bevat, en geen nommers nie.
7                15       1          Surname must contain at least three characters, and may not contain numbers.
8                15       2          Nom doit contenir au moins trois caractères, et ne peut contenir que des chiffres.
9                15       3          Van moet ten minste drie karakters, en geen nommers nie.
10               16       1          Please enter a valid email address.
11               16       2          S'il vous plaît entrer une adresse email valide.
12               16       3          Voer asseblief 'n geldige e-posadres.
LanuageID Language
1         en
2         fr
3         af
短语语言

PhraseID PhraseType Phrase
14       error      regexNameError
15       error      regexSurnameError
16       error      regexEmailError
PhraseLanguageID PhraseID LanguageID NativePhrase
4                14       1          Name must contain at least two characters, and may not contain numbers.
5                14       2          Nom doit contenir au moins deux caractères, et ne peut contenir que des chiffres.
6                14       3          Naam moet ten minste twee karakters bevat, en geen nommers nie.
7                15       1          Surname must contain at least three characters, and may not contain numbers.
8                15       2          Nom doit contenir au moins trois caractères, et ne peut contenir que des chiffres.
9                15       3          Van moet ten minste drie karakters, en geen nommers nie.
10               16       1          Please enter a valid email address.
11               16       2          S'il vous plaît entrer une adresse email valide.
12               16       3          Voer asseblief 'n geldige e-posadres.
LanuageID Language
1         en
2         fr
3         af
语言

PhraseID PhraseType Phrase
14       error      regexNameError
15       error      regexSurnameError
16       error      regexEmailError
PhraseLanguageID PhraseID LanguageID NativePhrase
4                14       1          Name must contain at least two characters, and may not contain numbers.
5                14       2          Nom doit contenir au moins deux caractères, et ne peut contenir que des chiffres.
6                14       3          Naam moet ten minste twee karakters bevat, en geen nommers nie.
7                15       1          Surname must contain at least three characters, and may not contain numbers.
8                15       2          Nom doit contenir au moins trois caractères, et ne peut contenir que des chiffres.
9                15       3          Van moet ten minste drie karakters, en geen nommers nie.
10               16       1          Please enter a valid email address.
11               16       2          S'il vous plaît entrer une adresse email valide.
12               16       3          Voer asseblief 'n geldige e-posadres.
LanuageID Language
1         en
2         fr
3         af
我要做的是,将所有错误短语放入某种数组、对象或类中,或者我可以在PHP脚本中轻松使用的东西中

目前,我正在使用以下查询获取短语类型为“error”的所有短语:

从短语连接短语_Language USING(PhraseID)选择*连接语言USING(LanguageID),其中Language='en'和PhraseType='error'

这让我得到了我需要的东西,但我不确定如何将它放入一个对象或一些我可以像这样查询的东西中:

$phrasererror->regexnamererror->NativePhrase

因为我需要的是本土语。我已经按短语类型对它们进行了分组,这样我就不必将整个表加载到我的查询中,我只得到我需要的。-从另一个线程获得此提示

我最终追求的是尽可能少的查询,这样我的网站不会因为整个节目中的多个(/重复)查询而变慢,也不会有长时间的查询,其中包含我在当前页面上不一定需要的信息。

这应该可以-

<?php
    //Selecting only the Phrase and the NativePhrase columns.
    $query = "SELECT Phrase, NativePhrase FROM Phrase JOIN Phrase_Language USING(PhraseID) JOIN Language Using(LanguageID) WHERE Language = 'en' AND PhraseType = 'error'";

    //Run the query.
    $res = $db->query($query) or die(mysqli_query($db));

    $PhraseError = Array();

    while($row = $res->fetch_assoc()){
        $PhraseError[$row['Phrase']] = $row['NativePhrase'];
    }

    /*
        This will now allow you to search like this,
        echo $PhraseError['regexSurnameError'];
        //will return the nativePhrase for that.
    */
?>

Thanx!我创建了一个可以在需要短语时调用的函数:
getPhraseFromType($lang,$phrasetype,$link)
-工作起来很有魅力。