Distinct = Fatal error: Allowed memory size... [SOLUCIONADO]
541 visitas
Categoría MySQL
Distinct = Fatal error: Allowed memory size...
|
| #0 |
 |
tigerzack |
Usuario |
03 ago 09 |
|
|
Buenas:
Necesito obtener los valores (sin repetirlos) de un campo determinado para cargarlos dentro de <option> que rellenará otra tabla.
Lo he intentado con los dos "$sql_tit_concepto" que aparecen comentados.
$contenido .='<td class="td_ad_form"><select name="tit_padre">';
# obtiene los valores permitidos para "titulo_padre"
# $sql_tit_concepto="SELECT DISTINCT concepto FROM danielpastor01.titulo ORDER BY id_titulo DESC;";
# $sql_tit_concepto="SELECT * FROM danielpastor01.titulo GROUP BY concepto;";
$opt_query=mysql_query($sql_tit_concepto, $conexion);
$opt=mysql_fetch_array($opt_query);
$options="";
while ($opt_query)
{
$options .='<option value="'.$opt['concepto'].'">'.$opt['concepto'].'</option>';
}
$contenido .= $options;
$contenido .='</select></td>';
El error que me devuelve el servidor es:
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 33292301 bytes) in C:xampphtdocsdanielpastorpaginasareasadmincap_worker.php on line 68 // La línea 68 es la que está dentro del while
¿Qué me podéis decir aparte de que me busque más RAM?? xD PeHachePeando...
|
SOLUCIÓN 

Re: Distinct = Fatal error: Allowed memory size...
|
| #1 |
 |
osmodiars |
Usuario |
03 ago 09 |
|
|
Para agregarle mas memoria tienes que ir al archivo php.ini y buscar la linea y agregarle estos valores (o mas)
memory_limit = 64M ; Maximum amount of memory a script may consume (16MB)
Igual, el problema no es ese, el "while" que haces en la linea 68 es infinito y te va ocupando recursos hasta que te ocupa toda la ram.
prueba de esta forma:
<?php
$contenido .='<td class="td_ad_form"><select name="tit_padre">';
# obtiene los valores permitidos para "titulo_padre"
# $sql_tit_concepto="SELECT DISTINCT concepto FROM danielpastor01.titulo ORDER BY id_titulo DESC;";
# $sql_tit_concepto="SELECT * FROM danielpastor01.titulo GROUP BY concepto;";
$opt_query=mysql_query($sql_tit_concepto, $conexion);
$options="";
while ( $opt=mysql_fetch_array($opt_query))
{
$options .='<option value="'.$opt['concepto'].'">'.$opt['concepto'].'</option>';
}
$contenido .= $options;
$contenido .='</select></td>';
?>
Espero que te sirva, saludos.
|
Re: Distinct = Fatal error: Allowed memory size...
|
| #2 |
 |
tigerzack |
Usuario |
04 ago 09 |
|
|
Perfecto!!
Yo ya estaba desvariando con:
$n=mysql_affected_rows();
#for ($i = 0 ; $i < $n ; $i++)
Y sólo me repetia el primer valor detectado aunque las affected rows eran correctas.
Te lo agradezco osmodiars ;) PeHachePeando...
|
Re: Distinct = Fatal error: Allowed memory size...
|
| #3 |
 |
tigerzack |
Usuario |
04 ago 09 |
|
|
Por si sirve de algo a alguien, posteo el mecanismo php-mysql que comprueba que no existan "capitulos_hijos" dentro de un título para posibilitar la eliminación de dicho título.
# captura de nombre para informar mediante alert y comprobar hijos
$catch="SELECT * FROM $table WHERE id_titulo LIKE '$id' LIMIT 1;";
$catching=mysql_query($catch,$conexion);
$res=mysql_fetch_assoc($catching);
$co=$res['concepto'];
# comprueba que el titulo no posea capitulos hijos
$cap_sql="SELECT * FROM danielpastor01.capitulo;";
$cap_query=mysql_query($cap_sql, $conexion);
$n=mysql_num_rows($cap_query);
for ($i=0; $i<=$n; $i++)
{
$res=mysql_fetch_array($cap_query);
if($res['titulo_padre']==$co)
{
echo "$scr alert('Imposible borrar: Contiene capitulos') $escr";
mysql_close($conexion);
echo "$scr window.location='tit_listing.php' $escr";
}
}
# crea tarea de borrado de entidad
$sql="DELETE FROM $table WHERE id_titulo LIKE '$id' LIMIT 1;";
PeHachePeando...
|
Responder mensaje
Para poder participar debes estar registrado e identificado. Si no estás registrado como usuario de PHP-Hispano,
:: Registrar ::