Foros del Web » Programando para Internet » PHP »

Unknown column 'Array' in 'where clause'

Estas en el tema de Unknown column 'Array' in 'where clause' en el foro de PHP en Foros del Web. Quiero mostrar una clasificación de tipos de fotos. Hay una base de datos de tipos, que tiene dos tablas. Una de ellas se llama tipos ...
  #1 (permalink)  
Antiguo 16/09/2009, 15:14
Avatar de PacoRuiz  
Fecha de Ingreso: abril-2009
Mensajes: 254
Antigüedad: 15 años
Puntos: 3
Unknown column 'Array' in 'where clause'

Quiero mostrar una clasificación de tipos de fotos. Hay una base de datos de tipos, que tiene dos tablas. Una de ellas se llama tipos y tiene dos campos, IDtipo y descripcion. La otra es jerarquía y guarda qué tipo es hijo de quien.Por ejemplo el tipo paisajes de montaña será hijo del tipo paisajes. Pero un tipo puede tener varios padres, por ejemplo el tipo retratos de mujeres será hijo del tipo retratos y del tipo mujeres. La tabla jerarquía tiene dos campos, tipo y padre. Cada tipo tendrá tantos registros en esta tabla como padres tenga.

De manera que al listar los tipos, muchos de ellos saldrán varias veces, pues saldrán debajo de cada uno de sus padres.

Empiezo mostrando los que no tienen padre. Quien no tenga registros en la tabla jerarquía no tendrá padre. Para cada uno de ellos muestro sus hijos, y a su vez los hijos de cada hijo, y así sucesivamente.

No existe ningún tipo cuya ID sea cero, de modo que lo hago de modo que buscar hijos para un padre cero sea buscar aquellos que no tienen registros en la tabla jerarquía.

Este es el código que intenta mostrar todos los tipos ordenados según sus padres:

Código:
<?php
function buscahijos($padre){
    global $clases;
    foreach ($clases as $actual){
        if (eshijo($actual, $padre)){
        echo "$actual<br>";
        buscahijos($actual);
        }
    }
}

function eshijo($actual, $padre){
    if ($padre=0){
            $result=mysql_query("select count(*) from jerarquia where tipo=$actual")or die (mysql_error());
            $existe=mysql_result($result,0);
            if (!$existe){
                return 1;
            }
            else{
                return 0;
            }
    }
    else{
        $result=mysql_query("select count(*) from jerarquia where tipo=$actual AND padre = $padre")or die (mysql_error());
        $existe=mysql_result($result,0);
        return $existe;
    }
}

$link = mysql_connect("localhost","root","");
mysql_select_db(dbimagenes,$link);
$result=mysql_query("select * from tipos");
$i=0;
while($array = mysql_fetch_array($result,MYSQL_ASSOC)){
$clases[$i]["ID"] = $array["IDtipo"];
$clases[$i]["descrip"] = $array["descripcion"];
$i++;
}
$padre=0;
buscahijos($padre);

?>
Y el error que me da es este:

Cita:
Unknown column 'Array' in 'where clause'
He buscado por ahí sobre este error y no me entero de nada.
  #2 (permalink)  
Antiguo 16/09/2009, 16:04
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Unknown column 'Array' in 'where clause'

Lo que pasa, es que estás pasando un array ( arreglo ) a la cláusula WHERE:

Código:
$result=mysql_query("select count(*) from jerarquia where tipo=$actual....
$actual es un arreglo. Debes pasarle una cadena. Nos vemos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:15.