我仅在实时托管帐户(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-->
如果有人能阐明我为什么收到此错误,我将非常感谢。
抱歉,这是一个愚蠢的问题!
以前从未遇到过此错误,但是我使用过Hostinger和其他免费托管网站,它们通常为免费帐户提供非常糟糕的服务
[通过搜索错误,我发现了这个stackoverflow答案:MySQL error 2006: mysql server has gone away,并根据u表示查询在本地主机上运行,问题可能是Hostinger的“ max_allowed_packet的默认设置非常低”,这会导致并行查询崩溃] >
我建议尝试“ alwaysdata.com”,这是我找到的最好的免费主机