0

いくつかのプレースホルダー (辞書機能) の翻訳についてデータベースにクエリを実行したいと考えています。エラー処理のために、辞書データベースに存在しないプレースホルダーを出力したいと考えています。

クエリの例:

SELECT `de` as `text` FROM `dictionary` WHERE `name` IN 
  ('button_search','eventlist_addons','eventlist_city',
   'eventlist_date','eventlist_name','gender_both',
   'gender_female','gender_male','startmenu_insert','startmenu_register') 
ORDER BY `name`

返されたレコードの数が、私が設定したものと同じでないかどうかを判断できます。しかし今、私はどのプレースホルダーがデータベースにあったか、またはデータベースになかったのかを知りたいと思っています。

MySQL のクエリでそれを実行できますか、または PHP でクールな方法はありますか?

それに対する私の機能はこれです:

function dictionary($text)
{
    global $db,$lang;
    preg_match_all('/##D##(.*)##D##/mU',$text,$matches);
    $matches[0] = array_unique($matches[0]);
    $matches[1] = array_unique($matches[1]);
    sort($matches[0]);
    sort($matches[1]);
    $sql = "SELECT `".$lang."` as `text` FROM `dictionary` WHERE `name` IN ('".implode("','",$matches[1])."') ORDER BY `name`";
    $result = $db->query($sql);
    $num = $db->num($result);
    if($num > 0)
    {
        if($num == $matches[1])
        {
            while($trans = $db->assoc($result))
            {
                $replace[] = $trans['text'];
            }
        }
        else
            echo_msg("Missing Placeholder","Error",true);
        $text = str_replace($matches[0],$replace,$text);
    }
    return $text;
}

編集
長短:「名前」列のリストセットではないすべての値を含む結果を取得したい

4

0 に答える 0