PDO - 查询执行了两次?

时间:2016-09-08 17:30:58

标签: php mysql

我的解决方案

我在index.php上调试我的函数,我没有注意到我的浏览器正在搜索favicon.icon。目前,如果找不到请求的文件,我的路由器会将用户发送到index.php,这会导致第二次触发。

您可以轻松找到这个@您的网站访问日志!

*对不起我的语法,我希望它可读..

主题

我创建了一个小数据库脚本,只有一件事我无法解决。当我执行插入查询时,它将执行两次。值不同(Value = openssl_random_pseudo_bytes)。

    private function __init($Query = '', $Params = NULL){
    if($this->__getStatus() === false){
        $this->__createConnection();
    }
    $this->__PQuery = $this->__Database->prepare($Query);
        foreach($Params as $param => $value){
            $dataType = PDO::PARAM_STR;
            switch ($value){
                case is_int($value):
                     $dataType = PDO::PARAM_INT;
                break;
                case is_bool($value):
                    $dataType = PDO::PARAM_BOOL;
                break;
                case is_null($value):
                    $dataType = PDO::PARAM_NULL;
                break;
        }
    $this->__PQuery->bindValue($param, $value, $dataType);
    }
    $this->__PQuery->execute();
}

函数调用:

$this->__database->Query("INSERT INTO `Serials` (`SerialKey`, `Active`, `ActivatedOn`, `ValidTo`, `Paid`) VALUES (:Serial, 'no', NULL, NULL, 'no');", ['Serial' => openssl_random_pseudo_bytes(10)]);

(查询将其发送到__init)

你们能不能给我任何想法?我现在正在寻找约4个小时。

执行前的Backtrace

  

Core \ Database \ Handler-> __ init(INSERT INTO SerialsSerialKeyActiveActivatedOnValidToPaid )VALUES(:Serial,' no',NULL,NULL,' no');,数组([Serial] =>��n����R))在[ PATH_TO_PUBLIC_HTMLpublic_html /核心/数据库/ Handler.php:45]     Core \ Database \ Handler->查询(INSERT INTO SerialsSerialKeyActiveActivatedOnValidToPaid)VALUES( :Serial,' no',NULL,NULL,' no');,在[PATH_TO_PUBLIC_HTMLpublic_html / Core调用的数组([Serial] =>��n����R)) /serialManager/createSerial.php:17]     在[PATH_TO_PUBLIC_HTMLpublic_html / Core / serialManager / createSerial.php:9]调用的Core \ serialManager \ createSerial-> __ storeToDB()     在[PATH_TO_PUBLIC_HTMLpublic_html / Controllers / Website.php:6]调用的Core \ serialManager \ createSerial-> __ construct()     网站 - >家庭()     call_user_func_array(在[PATH_TO_PUBLIC_HTMLpublic_html / Core / Routing / Router.php:20]中调用的Array([0] => Website Object(),[1] => Home),Array())     在[PATH_TO_PUBLIC_HTMLpublic_html / index.php:3]中调用的Core \ Routing \ Router-> __ construct()

执行后的Backtrace

  

Core \ Database \ Handler-> __ init(INSERT INTO SerialsSerialKeyActiveActivatedOnValidToPaid )VALUES(:Serial,' no',NULL,NULL,' no');, Array([Serial] =>F�7�,.Kr�))调用于[PATH_TO_PUBLIC_HTMLpublic_html /核心/数据库/ Handler.php:45]     Core \ Database \ Handler->查询(INSERT INTO SerialsSerialKeyActiveActivatedOnValidToPaid)VALUES( :Serial,' no',NULL,NULL,' no');,在[PATH_TO_PUBLIC_HTMLpublic_html /调用的数组([Serial] =>F�7�,.Kr�))芯/ serialManager / createSerial.php:17]     在[PATH_TO_PUBLIC_HTMLpublic_html / Core / serialManager / createSerial.php:9]调用的Core \ serialManager \ createSerial-> __ storeToDB()     在[PATH_TO_PUBLIC_HTMLpublic_html / Controllers / Website.php:6]调用的Core \ serialManager \ createSerial-> __ construct()     网站 - >家庭()     call_user_func_array(在[PATH_TO_PUBLIC_HTMLpublic_html / Core / Routing / Router.php:20]中调用的Array([0] => Website Object(),[1] => Home),Array())     在[PATH_TO_PUBLIC_HTMLpublic_html / index.php:3]中调用的Core \ Routing \ Router-> __ construct()

[注意]我的托管公司受到攻击..

*对不起我的语法,尽我所能..

1 个答案:

答案 0 :(得分:2)

问题原因

我的浏览器正在寻找favicon.ico,但它并不存在。如果文件/页面不存在,请求将路由到index.php

<强>错误

  • 在index.php上调试
  • 缺少favicon.ico

我学到了什么?

  • 永远不要在主页上调试,请参阅下面的原因。
  • 如果有2个请求正在进行(当1发出时)可能浏览器发送第二个请求以寻找favicon.ico(在我的情况下,如果页面存在,则返回主页)

<强>解决方案

1 不要调试你的index.php

2 将以下代码添加到您的

<link rel="shortcut icon" href="#" />

抱歉我的英文不足