我的解決方案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