2011-07-14 10 views
40

उत्तर के लिए धन्यवाद मैंने पाया है कि मैं fetch_all() का उपयोग करने में असमर्थ हूं क्योंकि मैं PHP 5.2.17 - fetch_assocwhile लूप के साथ काम कर रहा हूं।mysqli fetch_all() वैध कार्य नहीं है?


समारोह मैं fetch_all उपयोग कर रहा हूँ इस त्रुटि के साथ वापस आ रहा है:

Fatal error: Call to undefined method mysqli_result::fetch_all() in

$mysqli = new mysqli($host, $username, $password, $database); 
$query = "LONG QUERY that works, tested in phpmyadmin" 
$result = $mysqli->query($query); 
$result->fetch_all(); or $mysqli->fetch_all() tried both 
mysqli_fetch_all() was already tried. 
$mysqli->close(); 

मैं डीबी से कनेक्ट कर सकता हूँ और मैं एक पंक्तियों खींच लिया है। जब मैं PHPMYADMIN में क्वेरी डालता हूं तो मुझे 5 पंक्तियां मिलती हैं।

क्या यह कार्य भी काम करता है? क्या कोई तरीका है कि मैं अपना डेटा अपने आप पर एक assoc सरणी में रख सकता हूं?

उत्तर

43

यह फ़ंक्शन PHP 5.3.0 के बाद उपलब्ध है। संभवतः आपका संस्करण पुराना है। इसके बजाय fetch_assoc() का उपयोग करें।

while ($row = $result->fetch_assoc()) { 
    // do what you need. 
} 
+0

आप सभी के पास सही जवाब था, बस पहले व्यक्ति पर मतदान किया: डी धन्यवाद दोस्तों! – Phil

10

कृपया fetch_all() का उपयोग कर के बारे में सावधान रहना होगा:

http://www.php.net/manual/en/mysqli-result.fetch-all.php#88031

mysqldn आवश्यकता के बारे में टिप्पणी पढ़ें।

+0

धन्यवाद, मैंने इसे पढ़ा था लेकिन मुझे नहीं लगता था कि यह मुझे इसका उपयोग करने से रोक देगा। – Phil

+1

कोई समस्या नहीं! मुझे खुशी है कि आपने अपनी समस्या हल की है। –

8

Fabrizios जवाब देने के लिए एक अतिरिक्त के रूप में, कृपया ऊपर एक पाश के साथ अपने सरणी के निर्माण पर विचार: निर्माण के लिए एक साहचर्य सरणी एक while पाश में है विशिष्ट तरीका

$array = array(); 
while($row = $result->fetch_assoc()) 
    $array[] = $row; 
18

:

$results_array = array(); 
$result = $mysqli->query($query); 
while ($row = $result->fetch_assoc()) { 
    $results_array[] = $row; 
} 
27

mysqli::fetch_all() को mysqlnd ड्राइवर का उपयोग करने से पहले स्थापित करने की आवश्यकता है।

+2

हां, और यदि आपके पास राउंडक्यूब चल रहा है (डेबियन पर) यह काम करना बंद कर देगा क्योंकि mysqlnd php-mdb2-driver-mysql और roundcube-mysql ड्राइवर को हटा देता है। तो सावधानी के साथ mysqlnd स्थापित करें – trojan

0

पीएचपी गंभीर त्रुटि: बस mysqlnd ड्राइवर के बारे में एक अतिरिक्त नोट जोड़ने के लिए php 5.3 या

$query = "SELECT * FROM `user_counter` ORDER BY id DESC LIMIT 20"; 
$result = mysqli_query($connection, $query) or die 
("Error in Selecting " . mysqli_error($connection)); 
$rows = array(); 
while ($row = $result->fetch_assoc()) { 
    $rows[] = $row; 
} 
echo json_encode($rows); 
0

: अपरिभाषित समारोह mysqli_fetch_all()

$rows = mysqli_fetch_all($result, MYSQLI_ASSOC);//not work 

परिवर्तन करने के लिए करने के लिए कॉल करने के लिए यह भी है mysqli एपीआई एक्सटेंशन स्थापित है। विस्तार के बिना, fetch_all() अभी भी उपलब्ध नहीं होगा। समस्या निवारण के दौरान मुझे यह पता चला कि मेरा कोड एक सर्वर पर क्यों काम करता है, लेकिन दूसरा नहीं, दोनों PHP> 5.3। स्थापित एक्सटेंशन को सत्यापित करने के लिए phpinfo() का उपयोग करें।

0
function runQuery($query) { 
     $result = mysqli_query($this->conn,$query); 
       $resultset = array(); //you need to define array 
         while($row=$result->fetch_assoc()) { 
           $resultset[] = $row; //then insert result into the array 
      }  
      if(!empty($resultset)) 
      { 

      return $resultset;} 
      else{return 'empty';}; 
    } 
+0

क्यों डाउनवोट?यह टिप्पणी समस्या हल करती है जबकि मूल mysqli_fetch_all() विफल रहता है। PHP devs को इस आदमी से सीखना चाहिए कि कैसे कार्य लिखना है। – user619271

0

मेरे पास 5.6 थी लेकिन वैसे भी मेरे लिए काम नहीं किया। Mysqlnd ड्राइवर को सक्षम करके यह मेरे लिए काम करता है। बस apt-get install php5-mysqlnd लिखें फिर PHP को पुनरारंभ करें और आप जाने के लिए अच्छे हैं!

संबंधित मुद्दे