[請益] pdo prepare傳遞null<已解決>
使用的php版本是7.0
自己寫了一個mysql procedure
不過我想和這個無關
$str = 'call checkin(:stcode, :imei, @rs)';
$stmt = $cn->prepare($str);
$stmt->bindValue(":stcode", null, PDO::PARAM_NULL);
$stmt->bindParam(":imei", $this->imei);
$stmt->execute();
//在這行報錯
//PHP Fatal error: Allowed memory size of 134217728 bytes
//exhausted (tried to allocate 574448776 bytes)
測試的情況是,如果
$cn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
這設定就會出錯,如果
setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
就可以執行
並不是說可以執行就算了,用true並不算是利用到preare防止sql inject
有人有遇到類似的情況可以給個方向嗎?
感恩
--
最近看到的簽名檔,拿來借用,不曉得會不會犯了智產權?
西醫治標
中醫治本
中西合璧
治成標本
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.209.145
※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1483427415.A.9DF.html
推
01/03 16:49, , 1F
01/03 16:49, 1F
→
01/03 16:50, , 2F
01/03 16:50, 2F
推
01/03 18:19, , 3F
01/03 18:19, 3F
→
01/03 18:19, , 4F
01/03 18:19, 4F
→
01/03 18:21, , 5F
01/03 18:21, 5F
感謝版友的建議
目前把php版本降回5.3.3
已經沒有這個錯誤
當初是上一篇的問題
想說試一下7的版本
結果落漆了
不曉得會不會是來源的問題?
※ 編輯: pili100 (118.163.209.145), 01/04/2017 14:11:36
推
01/04 16:14, , 6F
01/04 16:14, 6F
→
01/04 16:15, , 7F
01/04 16:15, 7F
我又來回報進度了
php更新到5.6
mysql server 更新到5.5
目前大概可以確定問題的方向是
我的procedure裡面有一段建立臨時表
再把它select出來給程式抓資料
把第8行這句select反白就可執行
我把程式貼在以下網址
http://paste.ofcode.org/FSzC8NrtWXvmCKHNgimL5B
這問題如何解決
真傷腦筋
※ 編輯: pili100 (118.163.209.145), 01/05/2017 17:53:22
中間試了很多可能性
最後測試可用的情況
在procedure裡
有使用cursor
如果會使用到select拋出資料的
就放棄使用cursor吧,會出現
Packets out of order.
如果是會出現Segmentation fault
就是要你用完pdoStatement
記得null
結論
setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
使用上要小心
不曉得那個版本的預設是false
我的版本:
php 5.6.29
mysql server 5.5.54
終於找出問題
可以往下一關前進了
※ 編輯: pili100 (118.163.209.145), 01/06/2017 17:20:18
推
01/08 16:04, , 8F
01/08 16:04, 8F