日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

php保存成乱序,php – 调用MySQL存储过程时出现乱序错误

發布時間:2023/12/2 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php保存成乱序,php – 调用MySQL存储过程时出现乱序错误 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我正在嘗試使用PDO調用存儲過程,但在嘗試對結果進行獲取時遇到以下錯誤.

警告:數據包亂序.預計1收到16.數據包大小= 163

我的存儲過程使用兩個游標,我在從臨時表中選擇之前關閉它.我懷疑這可能是問題,因為我可以直接在MySQL中調用我的SP并且可以看到結果.在遷移到php_pdo_mysql.dll之前使用php_mysql擴展時,我也沒遇到過這個SP的問題.

我還可以使用PDO在PHP中調用包含INPUT參數的其他更簡單的存儲過程,并且可以在沒有任何錯誤的情況下獲取結果.

以下是返回錯誤的代碼:

$db = new PDO('mysql:host='.__DB_HOST__.';dbname='.__DB_NAME__.';charset=utf8', __DB_USER__, __DB_PASS__);

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

/* DOES NOT WORK */

$queryResult = $db->prepare("CALL GetResults(:siteId,null)");

$siteId = 19;

$queryResult->bindValue(':siteId', $siteId, PDO::PARAM_INT);

$queryResult->execute();

$result = $queryResult->fetchAll(PDO::FETCH_ASSOC); // returns packets out of order warning

print_r($result);

我在Try / Catch塊中有這個代碼,沒有拋出任何異常.實際上,PHP在瀏覽器中將其顯示為警告.

我的存儲過程簽名如下所示:

CREATE DEFINER=`root`@`localhost`

PROCEDURE `GetResults`(IN siteIdParam INT(11), IN siteSearchText VARCHAR(45))

我也不確定問題是否將null作為一個參數傳遞.有時第一個參數傳遞null,有時它是第二個.但無論它總是直接在MySQL服務器上運行.

我嘗試了bindParam和bindValue,結果相同.我也可以發布我的SP但它可能有點矯枉過正.

有沒有辦法打開PDO擴展的其他日志記錄?

任何想法或建議?如果您需要更多信息,請告訴我.

注意:我使用的是PHP v5.5.4和MySQL v5.6.14.

解決方法:

在花了很多時間試圖隔離我的代碼部分來解決這個問題后,我注意到在將ATTR_EMULATE_PREPARES標志設置為true后錯誤消失了.

$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);

這告訴PDO模擬準備好的語句,而不是MySQL本地模擬.根據我一直在閱讀的內容,如果您使用的是最新版本的MySQL和PHP,通常建議關閉此標志(默認情況下為true).您可以在此SO article中找到有關該信息的更多信息.

我相信這是MySQL的一個錯誤(我遇到了5.6.17版本的問題).關于這個特定問題的討論不多,所以希望這可以節省其他時間的故障排除.這個問題也在this MySQL bug page討論過,但是在我的情況下,發布的解決方案對我沒有幫助.

標簽:php,mysql,sql,pdo,stored-procedures

來源: https://codeday.me/bug/20190713/1454505.html

總結

以上是生活随笔為你收集整理的php保存成乱序,php – 调用MySQL存储过程时出现乱序错误的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。