繁体   English   中英

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

[英]Retrieve language phrases from database using mysqli and php

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

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

SELECT * FROM Phrase JOIN Phrase_Language使用(PhraseID)JOIN语言Using(LanguageID)WHERE语言='en'并且PhraseType ='错误';

这可以满足我的需要,但是我不确定如何将其放入对象或可以查询的对象:

$ phraseError-> regexNameError-> NativePhrase

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

我最终追求的是尽可能少地查询,以免整个演出过程中出现多个(/重复)查询而使我的网站变慢,而且也不要包含我不包含的信息的长查询必须在当前页面上。

这应该工作-

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM