[請益] pdo prepare傳遞null<已解決>

作者: pili100 (zelda)   2017-01-03 15:10:11
使用的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
有人有遇到類似的情況可以給個方向嗎?
感恩
作者: locklose (允)   2017-01-03 16:49:00
mysql version? mysql如果關掉該功能基本上只能模擬你看要不要檢查pdo_mysql driver安裝狀況跟mysql設定
作者: GALINE (天真可愛CQD)   2017-01-03 18:19:00
有 longblob/longtext 之類的東西?好像是某個底層限制..https://bugs.php.net/bug.php?id=51386這個issue是mysqli,但主角是 libmysql...pdo 也可能中招你這個滿靈異的,我猜你能公開貼的資訊不足以debug XD不過建議還是先上到 php5.6,至少兩年內還會有安全修正...好雷...

Links booklink

Contact Us: admin [ a t ] ucptt.com