mysqli_query():MySQL服务器已消失[重复]
Posted
技术标签:
【中文标题】mysqli_query():MySQL服务器已消失[重复]【英文标题】:mysqli_query(): MySQL server has gone away [duplicate] 【发布时间】:2019-06-23 03:08:00 【问题描述】:我收到以下错误:
Warning: mysqli_query(): MySQL server has gone away in (local db)
Warning: mysqli_query(): Error reading result set's header in (local db)
我首先建立连接:
$connection = new mysqli($server, $user, $pass, $db) or die("unable");
然后这个:
$sql = $connection->prepare("INSERT INTO comments (name,mail,homepage,comment,time) VALUES (?,?,?,?,?)");
$sql->bind_Param('sssss',$name,$mail,$homepage,$comment,$time);
$sql->execute();
if($sql)
if(!addPics($connection, $image_content, $mime, $time))
//other code
addPics 看起来像这样:
function addPics($connection, $image_content, $mime, $time)
$sql = $connection->prepare("INSERT INTO pictures (picture, mime, time) VALUES (?,?,?)");
$sql->bind_Param('sss',$image_content,$mime, $time);
$sql->execute();
if($sql)
return true;
else
return false;
第二个 sql->execute 发生错误。我的猜测是,这是因为我将连接用于多个请求,但我对 php 的了解并不能让我找到解决方案。
谢谢!
【问题讨论】:
感谢 progman 将其标记为重复,但它并没有解决我增加最大允许数据包的问题。或许您可以通过其他方式提供帮助,而不是担任学校礼堂监督员? 尝试释放语句对象——即$sql->close();
——另外,将$sql->execute()
的结果分配给一个变量并测试它而不是$sql
感谢@RamRaider,它解决了我的问题。不幸的是它开辟了一个新的..
【参考方案1】:
展示我的cmets
如果某些列名(或全部)在 SQL 中具有特殊含义,则最好在它们周围使用反引号 - 例如 name
或 time
$sql = $connection->prepare("INSERT INTO comments (`name`,`mail`,`homepage`,`comment`,`time`) VALUES (?,?,?,?,?)");
$sql->bind_Param('sssss',$name,$mail,$homepage,$comment,$time);
/* assign a variable to the `execute` method and test that var */
$result = $sql->execute();
if( $result )
/* the statement is now finished with, close it */
$sql->close();
if(!addPics($connection, $image_content, $mime, $time))
//other code
【讨论】:
以上是关于mysqli_query():MySQL服务器已消失[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 PHP 的 mysqli_query() 中转义双引号字符?
警告:mysqli_query():无法获取 mysqli [重复]