2012-04-11 3 views
1

Zum ersten Mal mit Memcache herumspielen; hier ist mein Code:Warum ruft memcache-> get() nur die erste Zeile aus der Datenbank ab?

$memcache = new Memcache(); 
    $memcache->connect('127.0.0.1', 11211) or die('Memcache connection error'); 

    // set the key then check the cache 
    $key = md5(' SELECT * FROM `users` '); 
    $get_result = $memcache->get($key); 

    if($get_result) { 
     echo "Data Pulled From Cache"; 
     var_dump($get_result); 
    } 
    else { 
     $query = ' SELECT * FROM `users` '; 
     $result = mysql_query($query); 
     $row = mysql_fetch_assoc($result); 
     $memcache->set($key, $row, TRUE, 20); // stored for 20 seconds 

     echo "Data Pulled from the Database"; 
     var_dump($row); 
    } 

Ich habe 50.000 Dummy-Benutzer in meiner Benutzer-Tabelle, wie nur die var-Dump kommen zeigt den ersten Benutzer? Wie Sie sehen können, gibt es keine Limit-Klauseln in der Abfrage.

+0

Sie sollten 'var_dump ($ get_result)' nicht 'var_dump ($ get_result [ 'username']); ' – Baba

Antwort

3

Sie holen nur eine Zeile aus der Ressource $result. Wenn Sie eine vollständige rowset wollen, müssen Sie jede Zeile in einer while Schleife holen und hängen Sie sie auf ein Array:

$rowset = array(); 
    while($row = mysql_fetch_assoc($result)) { 
    // Fetch all rows in loop, appending each onto $rowset 
    $rowset[] = $row; 
    } 
    // Store $rowset into memcache 
    $memcache->set($key, $rowset, TRUE, 20); // stored for 20 seconds 
Verwandte Themen