2010-06-16 7 views
0

J'ai un tableau multidimensionnel. Le tableau lui-même est bien. Mon problème est que le script prend de grandes quantités de mémoire, et depuis que je l'exécute sur mon installation MAMP sur mon iBook G4, mon ordinateur se bloque. Voici le script complet.Le tableau PHP prend trop de mémoire

$query = "SELECT * FROM posts ORDER BY id DESC LIMIT 10"; 
$result = mysql_query($query); 
$posts = array(); 
while($row = mysql_fetch_array($result)){ 

      $posts[$row["id"]]['post_id'] = $row["id"]; 
      $posts[$row["id"]]['post_title'] = $row["title"]; 
      $posts[$row["id"]]['post_text'] = $row["text"]; 
      $posts[$row["id"]]['post_tags'] = $row["tags"]; 
      $posts[$row["id"]]['post_category'] = $row["category"]; 

foreach ($posts as $post) { 
    echo $post["post_id"]; 
} 

est-il une solution qui permet d'atteindre encore mon objectif (d'exporter les lignes de requête MySQL à un tableau)?

-Dylan

+0

Quelle quantité de mémoire est utilisée? Avez-vous mesuré en utilisant [memory_get_usage] (http://us2.php.net/manual/fr/function.memory-get-usage.php)? – Charles

+2

Il ne peut pas y avoir de problème avec une erreur de syntaxe causée par le '}' manquant après la boucle qui n'est pas signalée puisque le rapport d'erreur est désactivé, n'est-ce pas? :) – deceze

Répondre

0

C'est étrange parce que vous avez défini la limite de 10 déjà. Notez que vous spécifiez un tableau associatif par exemple $row["title"] en utilisant la fonction mysql_fetch_array, ajoutez second paramètre à ce MYSQL_ASSOC ou utiliser mysql_fetch_assoc fonction à la place:

while($row = mysql_fetch_assoc($result)){ 
    $posts[$row["id"]]['post_id'] = $row["id"]; 
    $posts[$row["id"]]['post_title'] = $row["title"]; 
    $posts[$row["id"]]['post_text'] = $row["text"]; 
    $posts[$row["id"]]['post_tags'] = $row["tags"]; 
    $posts[$row["id"]]['post_category'] = $row["category"]; 
} 

Vous pouvez utiliser la fonction array_chunk à des morceaux de tableau et manipuler ces morceaux mais tu veux.

+0

Merci, mais il n'a pas fait le travail –

+0

@Dylan Taylor: Quel message d'erreur, le cas échéant, vous obtenez? – Sarfraz

+0

Ce n'est pas un message d'erreur - la page ne charge jamais et le processus httpd (le processus MAMP) va jusqu'à 28 Mo et grimpe. Je dois arrêter le chargement de la page et forcer le processus. –

1

Si ce code est verbatim, copié/collé directement à partir de votre code, une chose qui a attiré mon attention (sauf si je vois des choses) est l'absence de la fermeture '}' pour la boucle while ???

Cheers, Alex

+0

Ouais c'était ma faute de frappe. C'est là dans mon code. Merci pour l'information! –

Questions connexes