Call to undefined method DatabaseStatementBase::setFetchMode()
DatabaseStatementBase PDOStatement uzanır direkt olarak. Aşağıdaki minimuma kodu azaltarak zaman:
<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', 'test', 'test');
$pdostatement = $dbh->prepare('SELECT * FROM items WHERE id=?');
$pdostatement->setFetchMode(PDO::FETCH_CLASS);
$success = $pdostatement->execute([1]);
// do stuff...
Hala setFetchMode ilişkin satırda hata verir. Bu satırı yorumladığımda, hiçbir hata atılmaz, ancak bir nesne yerine ilişkisel bir dizi alıyorum - drupalin beklediği gibi değil. setFetchMode bulunmalıdır Özelliklede Sonra $pdostatement
kullanarak yansıma yöntemleri bulmaya çalıştığımda isimlerin bazıları için çöp olsun, Nihayet
(http://php.net/manual/en/pdostatement.setfetchmode.php bakınız) - ya da daha doğru, adı yaklaşık 1,5 MB uzun görünüyor ve bir sürü DLL okunmış gibi bir sürü okunamaz karakter ve yöntem isimleri içerir. İşte ondan ne var_dump
(& php7 Xdebug) bir örnek:
object(ReflectionMethod)[17]
public 'name' => string '����&������p�aZ������������ ���bindParam�������{�nZ���������������setAttribute����f�kZ����������j����FETCH_ORI_FIRST�a�pZ���������q��
���CURSOR_SCROLL���l�}Z���������������fetchColumn������zZ��������������wph�����&��������Z���������������debugDumpParams���Z��������.�����children����������Z������������wphX����&��������Z��������(��
���nextrowset��������Z������������
���__toString������ ��Z������������wph(����&������4��Z��������'... (length=1752201104)
public 'class' => string 'PDOStatement' (length=12)
Bunu nasıl düzeltebilirim?
garip geliyor. Lütfen çevreyi - kullanılan yazılımları, sürümleri, vb. Detaylandırın. Bir geçici çözüm olarak her zaman varsayılan getirme modunu ayarlayabilir veya getirme() –
yerine [fetchObject] (https://phpdelusions.net/pdo/objects#fetch) kullanabilirsiniz. Ayrıca, yöntemleri bulmak için yansıma gerekmez, sadece get_class_methods() kullanın –
Ah, sağ, get_class_methods' aynı sonucu verir. Ancak, 'fetchObject' kullanmak geçerli bir geçici çözüm değildir - unutmayın, burada drupal ile çalışıyorum, kodun bir kodunu değiştirmek zorundayım. Ayrıca üretim hala devam ediyor. –