我的解决方案PDO - 查询执行两次?
我在调试的index.php我的职务,我没有注意到,我的浏览器是寻找favicon.icon。目前,如果找不到请求的文件,我的路由器会将用户发送到index.php,这会导致第二个触发器。
您可以轻松地找到这个@你是站点访问日志!
*对不起,我的语法,我希望它的可读性..
主题
我创建了一个小数据库脚本,就只有一件事我解决不了。当我执行插入查询时,它将执行两次。值是不同的(值= 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个小时。
回溯之前执行
核心\数据库\处理程序 - > __初始化(INSERT INTO
Serials
(SerialKey
,Active
,ActivatedOn
,ValidTo
,Paid
)VALUES(:串行, '否',NULL,NULL,' )在[PATH_TO_PUBLIC_HTMLpublic_html/Core/Database/Handler.php:45] Core \ Database \ Handler-> Query(INSERT INTOSerials
(no)),Array([Serial] => n R)SerialKey
,Active
,ActivatedOn
,ValidTo
,Paid
)VALUES(:Serial,'no',NULL,NULL,'n )在[PATH_TO_PUBLIC_HTMLpublic_html/Core/serialManager/createSerial.php:17]调用的Core \ serialManager \ createSerial - > __ storeToDB()调用的数组([Serial] => n R) ()[0] [0] [0]回复此主题返回主题列表(0)相关内容查看和编辑器相关的微博。分享到:QQ空间新浪微博腾讯微博人人网腾讯微博百度相册更多...百度分享首页在[PATH_TO_PUBLIC_HTMLpublic_html/Core/Routing/Router.php:20]调用Core \ Routing \ Router - > __ construct()时调用的网站对象(),[1] => Home),数组() /index.php:3]
执行后回溯
核心\数据库\处理程序 - > __初始化(INSERT INTO
Serials
(SerialKey
,Active
,ActivatedOn
,ValidTo
,Paid
)VALUES(:串行, '否',NULL,NULL, '否');,阵列( [串行] => F7,.Kr))称为在[PATH_TO_PUBLIC_HTMLpublic_html /核心/数据库/ Handler.php:45] 核心\数据库\ Handler->查询(INSERT INTOSerials
(SerialKey
,Active
,ActivatedOn
,在[PATH_TO_PUBLIC_HTMLpublic_html/Core/serialManager/createSerial())中调用的值((Serial,'no',NULL,NULL,'no'),Array([Serial] =>F 7 ,.Kr ) 。在[PATH_TO_PUBLIC_HTMLpublic_html/Controllers/Website上调用Core \ serialManager \ createSerial - > __ construct()时调用了Core \ serialManager \ createSerial - > __ storeToDB()[0124]在[PATH_TO_PUBLIC_HTMLpublic_html/Core/Routing/Router.php]中调用call_user_func_array(Array [[0] => Website Object(),[1] => Home),Array())。 :20] 核心\路由\路由器 - > __结构()呼吁在[PATH_TO_PUBLIC_HTMLpublic_html/index.php文件:3]
[注]我的托管公司都受到了攻击..
*对不起,我的语法,做了我最好的..
代码验证@其他服务器;代码是100%的工作? ddos /攻击可以导致这个问题吗? –
DDOS可以暴露您不知道您拥有的竞争条件。它不会创建错误,它会暴露它们。如果你想阻止重复,可以设置一个'UNIQUE'索引来阻止它们,或者有一些[幂等系统](https://en.wikipedia.org/wiki/Idempotence)来确保第二个调用isn没有触发。 – tadman
是db获取两次?或者只是通过观察痕迹来表达它? – siddhesh