【问题标题】:Retrieve language phrases from database using mysqli and php使用 mysqli 和 php 从数据库中检索语言短语
【发布时间】:2014-02-03 08:54:44
【问题描述】:

我有以下 3 个表:

短语

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 脚本中轻松使用的东西中。

目前我正在使用以下查询来获取短语类型“错误”的所有短语:

SELECT * FROM Phrase JOIN Phrase_Language USING(PhraseID) JOIN Language Using(LanguageID) WHERE Language = 'en' AND PhraseType = 'error';

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

$phraseError->regexNameError->NativePhrase

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

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

【问题讨论】:

    标签: php mysqli


    【解决方案1】:

    这应该可以 -

    <?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.
        */
    ?>
    

    【讨论】:

    • 谢谢!我创建了一个函数,我可以在需要短语时调用它:getPhraseFromType($lang, $phrasetype, $link) - 就像一个魅力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 2011-03-15
    • 2012-08-11
    • 1970-01-01
    • 2018-12-01
    • 2010-10-12
    • 2010-12-04
    相关资源
    最近更新 更多