Foros del Web » Programando para Internet » PHP »

error de sintaxis en select count

Estas en el tema de error de sintaxis en select count en el foro de PHP en Foros del Web. Hola, tengo un error en un código. Me dice que es un error de sintaxis, pero la he visto y me parece correcta. No sé ...
  #1 (permalink)  
Antiguo 27/09/2009, 04:38
Avatar de PacoRuiz  
Fecha de Ingreso: abril-2009
Mensajes: 254
Antigüedad: 15 años, 6 meses
Puntos: 3
error de sintaxis en select count

Hola, tengo un error en un código. Me dice que es un error de sintaxis, pero la he visto y me parece correcta. No sé qué pasa:

La instrucción es esta:

Código:
$result=mysql_query("select count (*)from jerarquia where tipo ='$categoria'")or die (mysql_error());
Y el mensaje de error:

Cita:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*)from jerarquia where tipo ='8'' at line 1
Ahora voy a colocar el código entero por si el error viene de otro lado, y lo que muestra. La línea del error es la 23:

Código:
<?php
function suprimehijos($tipo,$opcion){
    if ($opcion!='opcion3'){
        if ($opcion!='opcion4'){
             mysql_query("delete from tipos where IDtipo='$tipo'");
        }
        if ($opcion=='opcion2'){
                $opcion='opcion4';
        }
        $result=mysql_query("select tipo from jerarquia where padre = '$tipo' ");
        $filas=mysql_num_rows($result);
        echo"filas=$filas<br>";
        echo "tipo=$tipo, opcion=$opcion<br>";
        if($filas>0){
            while ($fila=mysql_fetch_row($result)){
                $categoria=$fila[0];
                if($opcion=='opcion1'){
                    echo "suprimehijos $categoria,$opcion<br>";
                    suprimehijos($categoria,'opcion1');
                    mysql_query("delete from jerarquia where tipo='$categoria'");    
                }
                if($opcion=='opcion4'){
                    $result=mysql_query("select count (*)from jerarquia where tipo ='$categoria'")or die (mysql_error());
                    $filas=mysql_result($result,0);
                    if ($filas==1){
                        $opcion="opcion2";
                    }
                    mysql_query("delete from jerarquia where tipo='$categoria' AND padre='$tipo'");
                    echo"voy a llamar a suprimehijos:$categoria,$opcion<br>";
                    return;
                suprimehijos($categoria,$opcion);
                }  
                if($opcion=='opcion2'){
                    $result=mysql_query("select count (*)FROM jerarquia WHERE tipo ='$categoria'");
                    $filas=mysql_num_rows($result);
                    if ($filas>1){
                        $opcion="opcion4";
                    }
                    echo"voy a llamar a suprimehijos:$categoria,$opcion<br>";
                    suprimehijos($categoria,$opcion);
                    return;
                }
            }
            mysql_query("delete from jerarquia where padre='$tipo'");
            
        }
    }
    if($opcion=='opcion3'){
        $result=mysql_query("select padre from jerarquia where tipo = '$tipo' ");
        while ($fila=mysql_fetch_row($result)){
            $abuelo=$fila[0];
            echo"el abuelo es $abuelo";
            $resultado=mysql_query("select tipo from jerarquia where padre = '$tipo' ");
            while ($linea=mysql_fetch_row($resultado)){
                $categoria=$linea[0];
                echo"el nieto es $categoria";
                mysql_query("delete from jerarquia where tipo='$categoria'");
                mysql_query("Insert jerarquia (tipo,padre) values ('$categoria','$abuelo')");
            }
        }
    
        mysql_query("delete from jerarquia where tipo=$tipo");
        mysql_query("delete from jerarquia where padre=$tipo");
        mysql_query("delete from tipos where IDtipo=$tipo");
        
    }
}
$link=mysql_connect("localhost","root","");
mysql_select_db(dbimagenes,$link);
$tipo=$_POST['tipo'];
$opcion=$_POST['opcion'];
$opcioncat=$_POST['opcioncat'];
suprimehijos($tipo,$opcion);
/*alert
echo "
<script language='JavaScript'>
var prueba = 'La categoría ha sido suprimida corréctamente. Compruebe la nueva clasificación';
alert(prueba);
location.href = \"http://localhost/imagenes/formsuprimetipo.php\";
</script>";
                         */
?>
Y lo mostrado es:

Cita:
filas=1
tipo=7, opcion=opcion4
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*)from jerarquia where tipo ='8'' at line 1
  #2 (permalink)  
Antiguo 27/09/2009, 07:05
Avatar de cemansilla  
Fecha de Ingreso: septiembre-2007
Ubicación: Buenos Aires, Argentina, Argentina
Mensajes: 214
Antigüedad: 17 años, 2 meses
Puntos: 6
Respuesta: error de sintaxis en select count

En lugar de hacer el COUNT(*) proba hacero sobre un único campo de la tabla, por ejemplo COUNT(id).
  #3 (permalink)  
Antiguo 27/09/2009, 08:18
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 16 años, 3 meses
Puntos: 32
Respuesta: error de sintaxis en select count

La consulta la veo bien, verifica q la tabla exista que el campo tipo exsita que $categoria tenga algun valor.
  #4 (permalink)  
Antiguo 27/09/2009, 12:44
Avatar de PacoRuiz  
Fecha de Ingreso: abril-2009
Mensajes: 254
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: error de sintaxis en select count

La tabla existe, el campo tipo existe en la tabla y $jerarquia tiene un valor, de echo fíjate enel mensaje de error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*)from jerarquia where tipo ='8'' at line 1

O sea que $jerarquia vale 8.

No creo que realmente tenga un error de sintaxis, sino un error de otro tipo que deriva en un error de sintaxis, quizás relacionado con la variable $jerarquia. Me llama la atención del mensaje de error near '*)from jerarquia where tipo ='8'' ese 8 que empieza con comilla simple y acaba con dobles, no sé por qué.

Sé que mi código es largo para pediros que lo analicéis en detalle, pero ¿alguien me puede sugerir por dónde buscar el error? Estoy bloqueado, no sé por dónde darle vueltas.
  #5 (permalink)  
Antiguo 27/09/2009, 12:50
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: error de sintaxis en select count

el error es que no estas haciendo buen uso de sintaxis...

Código:
// MAL
SELECT COUNT (*)FROM tabla

// BIEN
SELECT COUNT(*) FROM tabla
si pones atencion, los espacios son importantes... y te hacen falta, y sobran...


suerte!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 28/09/2009, 08:54
Avatar de PacoRuiz  
Fecha de Ingreso: abril-2009
Mensajes: 254
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: error de sintaxis en select count

Gracias. Estaba harto de este error. Había abierto varios temas sobre él y llevaba varios días dándole vueltas. Y el caso es que ya me había ocurrido antes.
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 22:14.