我有以下代碼:循環準備statments
try
{
if(!($stmt = $conn["DB"]->prepare('CALL `central`.`permissions_edit`(?,?,?,?,?);')))
{
$rtn["Errors"][] = "permissions_edit Prepare failed: (" . $conn["DB"]->errno . ") " . $conn["DB"]->error;
}
else{
foreach ($data as $user => $areas) {
foreach ($areas as $area => $access) {
foreach ($access as $acc => $active) {
if($active != "U")
{
if(!($stmt->bind_param(
'siiis',
$key,
$user,
$area,
$acc,
$active
)))
{
$rtn["Error"][] = "permissions_edit Bind failed: (" . $conn["DB"]->errno . ") " . $conn["DB"]->error;
}
else if(!($stmt->execute()))
{
$rtn["Errors"][] = "permissions_edit Execute failed: (" . $conn["DB"]->errno . ") " . $conn["DB"]->error;
}
else if($res = $stmt->get_result())
{
if ($row = $res->fetch_assoc())
{
if(isset($row["Success"]) && $row["Success"])
{
$rtn["Results"][]= "user=$user areas=$area access=$acc active=$active Message=" . $row["Msg"];
}
else
{
$rtn["Success"] = false;
$rtn["Errors"][]= "user=$user areas=$area access=$acc active=$active Message=" . $row["Msg"];
}
}
}
else
{
$rtn["Errors"][] = "permissions_edit Get failed: (" . $conn["DB"]->errno . ") " . $conn["DB"]->error;
}
}
else
$rtn["Results"][]= "user=$user areas=$area access=$acc active=$active Message=Unchanged";
}
}
}
}
}
catch(Exception $e)
{
$rtn["Errors"][] = "permissions_edit Error(" . $conn["DB"]->errno . "): " . $conn["DB"]->error;
}
使用此代碼在那裏,循環重複1-2次完美的作品 但是使用此代碼在那裏,循環重複兩次以上將導致POST到PHP來封端的無響應
,並生成在MySQL日誌以下,
2017-03-03T16:47:49.284972Z 450 [注]中止連接450到DB: '中央' 用戶: '用戶名' 主機: '本地主機'(得到了一個錯誤讀出 通信分組)
2017-03-03T16:47:49.582165Z 451 [注]中止 連接451至DB:「中央'用戶名:'用戶名'主機:'localhost' (錯誤讀取通信數據包)
所以問題是我做了什麼錯?
注意 我嘗試添加
$res->free();
$stmt->close();
這就導致
包亂序。預計1接收7包大小= 7
mysqli_stmt ::執行():MySQL服務器已消失
mysqli_stmt ::執行():讀取錯誤結果集的頭
的信息。 PHP
PHP Version 5.6.27
mysqli
MysqlI Support enabled
Client API library version mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $
Active Persistent Links 0
Inactive Persistent Links 0
Active Links 0
Directive Local Value Master Value
mysqli.allow_local_infile On On
mysqli.allow_persistent On On
mysqli.default_host no value no value
mysqli.default_port 3306 3306
mysqli.default_pw no value no value
mysqli.default_socket no value no value
mysqli.default_user no value no value
mysqli.max_links Unlimited Unlimited
mysqli.max_persistent Unlimited Unlimited
mysqli.reconnect Off Off
mysqli.rollback_on_cached_plink Off Off
我想有對服務器進行,並且可能會導致這...從過多的請求整齊版本編輯我猜想http://stackoverflow.com/questions/2232150/pdo-mysql-server-has-gone-away這個線程可以幫助 – RohitS
,你可以從錯誤中看到它的localhost DB只有我使用它,所以在那裏應該只是當前訪問它的這個命令,這些應該是順序不同步 – MikeT
T是...但有一些解決方案ns在線程內,您可以嘗試..也嘗試啓用重新連接屬性。 – RohitS