执行查询的PDO在我的数据库中插入更多行,然后它应该

时间:2016-02-02 20:14:58

标签: php mysql pdo execute

我做了一个小脚本,现在当我调用脚本时,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,而且还加载了我的脚本。

1 个答案:

答案 0 :(得分:-1)

尝试跟踪每个请求写入日志文件的脚本调用次数(不要忘记flock())。

显然,由于某种原因你的脚本被调用了两次,你也应该分析http服务器的访问日志。