मैं विंडोज पर Drupal 7 के साथ काम कर रहा हूँ, पीएचपी 7 पर, Xampp पर, और अचानक मैं निम्न त्रुटि हो रही शुरू:अपरिभाषित विधि PDOStatement के लिए कॉल :: setFetchMode()
Call to undefined method DatabaseStatementBase::setFetchMode()
DatabaseStatementBase कहाँ फैली PDOStatement सीधे। जब निम्न न्यूनतम करने के लिए कोड को कम करने:
<?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...
यह अभी भी setFetchMode के बारे में लाइन पर एक त्रुटि फेंकता है। जब मैं उस पंक्ति को टिप्पणी करता हूं, तो कोई त्रुटि नहीं फेंकती है, लेकिन मुझे किसी ऑब्जेक्ट के बजाय एक एसोसिएटिव सरणी मिलती है - न कि क्या ड्रोपल अपेक्षा करता है। खासकर जब से setFetchMode मौजूद होना चाहिए अंत में (देखें http://php.net/manual/en/pdostatement.setfetchmode.php)
, जब मैं तो प्रतिबिंब $pdostatement
का उपयोग कर के तरीकों खोजने की कोशिश, मैं नाम से कुछ के लिए कचरा मिल - या, और अधिक सही, नाम लगता है 1.5MB के बारे में लंबे समय तक और इसमें कई अपठनीय पात्र और कुछ विधि नाम शामिल हैं, जैसे कि एक संपूर्ण डीएलएल वहां या कुछ में लोड किया गया था। यहां बताया गया है var_dump
(& php7 xdebug) का एक उदाहरण है इसके बारे में बनाना:
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)
कैसे मैं इसे ठीक कर सकते हैं?
अजीब लगता है। कृपया पर्यावरण पर विस्तृत करें - इस्तेमाल किए गए सॉफ़्टवेयर, संस्करण इत्यादि। वर्कअराउंड के रूप में आप हमेशा लाने के बजाय डिफ़ॉल्ट fetch मोड सेट कर सकते हैं या [fetchObject] (https://phpdelusions.net/pdo/objects#fetch) का उपयोग कर सकते हैं() –
इसके अलावा, आपको विधियों को खोजने के लिए प्रतिबिंब की आवश्यकता नहीं है, बस get_class_methods() –
आह का उपयोग करें, ठीक है, 'get_class_methods' yiels एक ही परिणाम। हालांकि, 'fetchObject' का उपयोग वैध कार्यवाही नहीं है - याद रखें, मैं यहां ड्रोपल के साथ काम कर रहा हूं, मुझे कोड का _lot_ बदलना होगा। इसके अलावा, उत्पादन अभी भी काम करता है। –