我想查询我的数据库以获取一些占位符(字典功能)的翻译。对于错误处理,我希望输出字典数据库中不存在的占位符。
查询示例:
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`
我可以确定,返回的记录数是否与我间隔的记录数不同。但现在我想知道,哪个占位符/s 不在数据库中并输出它/它们。
我可以用 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;
}
编辑
长话短说:我想得到一个结果,其中包含所有值,这不是“名称”列中的列表