我做了一个小脚本,现在当我调用脚本时,PDO应该插入行1次,而不是两次插入未设置的值。
这是第一个代码
function checkContent($content, $lang){
preg_match_all("/\[([^\]]*)\]/", $content, $matches);
$items = array();
foreach($matches[1] as $match){
$items[] = explode("|", $match);
}
foreach($items as $item):
$module = $item[0];
$slug = $item[1];
switch($module){
case "translation";
$content = str_replace("[{$module}|{$slug}]", translation($slug, $lang), $content);
break;
}
endforeach;
return $content;
}
在上面的代码中,它调用函数translation();
function translation($trans, $langTag){
global $cms_db;
$sql = $cms_db->prepare("SELECT translation FROM translations WHERE uniqueName = ? AND language = ?");
$sql->execute(array($trans,$langTag));
$translation = $sql->fetch(PDO::FETCH_ASSOC);
if(empty($translation)):
$sql = $cms_db->prepare("INSERT INTO translations (uniqueName, translation, language, new) VALUES (?,?,?,?)");
$sql->execute(array($trans,$trans,$langTag,'1'));
//EDIT, even with a die here, it enters 2 rows.
//die()
return $trans;
else:
return $translation['translation'];
endif;
}
在此代码中,应使用值在数据库中输入1行。
$trans = "button.next";
$langTag = "NL";
即使我在函数中使用了die(),它也会插入两行,一行值为good,第二行$ langTag随机更改为:favicon.ico。
最奇怪的是我在代码中的任何地方都没有使用favicon.ico。
我希望你们可以帮助我,也许我看起来并不好,但我对此感到有点沮丧
提前致谢!
编辑,未修复 问题是我忘记了meta favicon标签。现在它工作正常,是否有人可以向我解释为什么favicon会在?lang = XXX参数中发送到我的脚本?
编辑2 太糟糕了,我认为它已修复,但今天我在我的数据库中再次获得了值。这真是令人沮丧,因为它在我的数据库中放了一个随机的东西
经过一段时间的愤怒编码:P
我想我最终解决了这个问题,我认为这是一个问题,我包含了一些不必要的js / css,而且还加载了我的脚本。
答案 0 :(得分:-1)
尝试跟踪每个请求写入日志文件的脚本调用次数(不要忘记flock())。
显然,由于某种原因你的脚本被调用了两次,你也应该分析http服务器的访问日志。