执行SQL查询时出错,如果单独执行,则有效

问题描述 投票:0回答:1

我仅在实时托管帐户(hostinger)上收到错误。它在我的本地(XAMPP)服务器上可以正常工作。此外,在实时托管服务器上,仅当我执行多次调用它们各自的PDO语句的检查时才会出现错误。

这里是我的代码:

if(check if user exists){
   if(submitted status different from status in DB){
   call PDO function to update status and enter into log file
   }

   if(submitted role different from role in DB){
   call PDO function to update role and enter into log file
   }

   if(submitted class different from class in DB){
   call PDO function to update class and enter into log file
   }
 }else{
       redirect()
    }

这三个“ if语句”仅检查提交的值是否与数据库中存在的值不同,因此,仅当提交的值与DB中的相应值不同时,我才能进行更新。地位,角色和阶级也不互相依赖。

PDO功能:

  Each PDO function has a query like 
  "INSERT INTO log where....;
   UPDATE users where...."

如果两个或多个条件通过,我会收到错误消息。如果仅通过一个条件,例如仅需要更新状态,那么我不会收到任何错误。

此外,即使两个或多个条件通过(例如,状态和角色需要更新)并且我确实得到了错误,更改仍以某种方式成功反映在数据库中。

正如我之前提到的,在XAMPP上一切正常。

托管站点上的错误:

 Warning: Packets out of order. Expected 2 received 3. Packet size=48 
 in..... line 39

 Warning: Database::query(): MySQL server has gone away in..... line 39

 Warning: Database::query(): Error reading result set's header 
 in.....line39 

 Fatal error: Uncaught PDOException: SQLSTATE[HY000]General error: 2006 
 MySQL server has gone awayin.......<--SOME VERY LONG TEXTS-->

如果有人能阐明我为什么收到此错误,我将非常感谢。

抱歉,这是一个愚蠢的问题!

php mysql pdo
1个回答
0
投票

以前从未遇到过此错误,但是我使用过Hostinger和其他免费托管网站,它们通常为免费帐户提供非常糟糕的服务

[通过搜索错误,我发现了这个stackoverflow答案:MySQL error 2006: mysql server has gone away,并根据u表示查询在本地主机上运行,​​问题可能是Hostinger的“ max_allowed_pa​​cket的默认设置非常低”,这会导致并行查询崩溃] >

我建议尝试“ alwaysdata.com”,这是我找到的最好的免费主机

© www.soinside.com 2019 - 2024. All rights reserved.