Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Not in mysql php

Estas en el tema de Not in mysql php en el foro de Mysql en Foros del Web. Hola, tengo un problema hago una consulta en la cual quiero que me devuelva los id que no estan en un array php para eso ...
  #1 (permalink)  
Antiguo 13/05/2012, 16:06
 
Fecha de Ingreso: septiembre-2011
Mensajes: 480
Antigüedad: 12 años, 7 meses
Puntos: 18
Not in mysql php

Hola, tengo un problema hago una consulta en la cual quiero que me devuelva los id que no estan en un array php para eso uso el NOT IN()
pero resulta que no me hace la consulta...solo me devuelve los id todos
y no deberia devolverlos! ahora nose si es por el array() que tengo de todas formas dejo aqui el codigo que uso! gracias :D

Código PHP:
Ver original
  1. $no_permitidos=$_POST['per'];
  2. $valores=explode(",",$no_permitidos);
  3. $consultar=("SELECT id_usuario FROM user WHERE  (id_foto='$id_foto') AND (id_comentario NOT IN('$valores')) ");
  4.  
  5. //$id_foto es claro que si me llega y todo!...pero el problema es alli! nose  q debo acomodar! :S
  #2 (permalink)  
Antiguo 13/05/2012, 16:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Not in mysql php

En el IN, todos los valores debe quedar dentro del paréntesis, separados por comas.
Como este foro no es el foro de PHP, y no todos trabajamos en ese lenguaje (una de las causas por las que está prohibido postear código de programación acá), no estoy seguro de si eso es lo que estás obteniendo en el explode().
Eso lo sabrás tu.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 13/05/2012, 16:45
 
Fecha de Ingreso: septiembre-2011
Mensajes: 480
Antigüedad: 12 años, 7 meses
Puntos: 18
Respuesta: Not in mysql php

Hola compañero gracias por responder!
ok! yo entonces, sin hacer el explode recibo todo separado por "," pero no es un array ni nada de eso sino algo asi 1,2,3,4,5,6,7, mas nada! y acabo de probar metiendo eso! en la consulta! y aun no hace nada :S que sera?
  #4 (permalink)  
Antiguo 13/05/2012, 19:17
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Not in mysql php

Postea la consulta tal y como queda construida antes de enviarla a MySQL.
Veremos cómo está quedando la sintaxis...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 13/05/2012, 22:04
 
Fecha de Ingreso: septiembre-2011
Mensajes: 480
Antigüedad: 12 años, 7 meses
Puntos: 18
Respuesta: Not in mysql php

es que compañero asi queda :D
$no_permitidos=$_POST['per'];
$valores=explode(",",$no_permitidos);

el $no_permitidos=1,2,3,4,5,6,7...
y eso yo lo convierto en array con el explode! y lo uso dentro de la consulta :s
  #6 (permalink)  
Antiguo 14/05/2012, 04:06
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Not in mysql php

A lo que me refiero es al contenido de $consultar.
Hazle un echo y postea lo que queda armado, para ver lo que realmente estás enviando a MySQL.
Debe quedar algo parecido a:
Código MySQL:
Ver original
  1. SELECT id_usuario
  2. WHERE  id_foto= 23 AND id_comentario NOT IN(2, 3, 4, 5, 6)
(Los valores numéricos que pongo son imaginarios)
Si eso no genera errores, pero tampoco devuelve datos, entonces es que no hay registros que cumplan esa condición.

Por cierto, si usas AND, poner ambas condiciones entre paréntesis no es necesario
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 14/05/2012, 14:12
 
Fecha de Ingreso: septiembre-2011
Mensajes: 480
Antigüedad: 12 años, 7 meses
Puntos: 18
Respuesta: Not in mysql php

Compañero hice lo q me dijiste para ver...q es lo que ingresa a mysql y aparece esto 1,2,3,9,11,13,
eso es lo q ingresa al Mysql! y la consulta la tengo actualmente asi!
$consultar=("SELECT id_usuario,id_comentario FROM user WHERE id_foto='$id_foto' AND id_comentario NOT IN('$valores')");
  #8 (permalink)  
Antiguo 15/05/2012, 02:50
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Not in mysql php

NOT IN('$valores')

Sobran esos delimitadores....

Si te fijas en lo que retorna el echo sera algo similar a esto

Código MySQL:
Ver original
  1. SELECT id_usuario
  2. WHERE  id_foto= 23 AND id_comentario NOT IN('2, 3, 4, 5, 6')

con lo que el contenido del parentesis de IN es leido como un string no como una sucesion de valores...

Código MySQL:
Ver original
  1. SELECT id_usuario
  2. WHERE  id_foto= 23 AND id_comentario NOT IN(2, 3, 4, 5, 6)

Los delimitadores solo se deben usar para strings o fechas, para los campos numéricos no son necesarios.

(En la tabla user tienes id_foto y id_comentario ??? )
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 15/05/2012 a las 02:57
  #9 (permalink)  
Antiguo 15/05/2012, 04:03
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Not in mysql php

Muy buena, quimfv. Se me escapó ese detalle...
Son las confusiones que se arman a veces cuando mezclan códigos. Si no miras con atención, esas cosas pasan desapercibidas...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 15/05/2012, 19:24
 
Fecha de Ingreso: septiembre-2011
Mensajes: 480
Antigüedad: 12 años, 7 meses
Puntos: 18
Respuesta: Not in mysql php

Compañeros al parecer NO, porque me dice esto 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 ')' at line 1
  #11 (permalink)  
Antiguo 15/05/2012, 19:49
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Not in mysql php

Cita:
Iniciado por edward18_1 Ver Mensaje
Compañeros al parecer NO, porque me dice esto 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 ')' at line 1
Esto nos nos dice nada a menos que postees, como ya te he dicho antes, el contenido de $consulta una vez que la has cargado y antes de enviarlo a MySQL.

Sin saber exactamente cómo ha quedado escrita, no hay nadie que pueda decirte cuál es el error que la variable está produciendo.
Haznos el favor de seguir las indicaciones, hacer un echo de esa variable, copiarlo y postearlo aquí.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 16/05/2012, 02:43
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Not in mysql php

Insisto en lo que te dice gnzsoloyo

Pero ... por que pones esos parentesis

$consultar=("SELECT id_usuario,id_comentario FROM user WHERE id_foto=$id_foto AND id_comentario NOT IN($valores)");

$id_foto debe ser un numero

$valores debe ser una sucesion de numeros sparados por comas 1,2,3,....,n que no ternime en coma como has puesto en algun ejemplo

Cita:
...y aparece esto 1,2,3,9,11,13, eso es lo q ingresa al...
Y hasta aqui mi ejercicio de imaginacion y paciencia, por favor postea la query tal y como llega al servidor...

echo $consultar."<br>";

copy/paste here
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #13 (permalink)  
Antiguo 16/05/2012, 19:28
 
Fecha de Ingreso: septiembre-2011
Mensajes: 480
Antigüedad: 12 años, 7 meses
Puntos: 18
Respuesta: Not in mysql php

Compañeros muchas! gracias a todos!, al parecer el problema de todo era la ultima coma "," que no debe estar alli! ahora si! todo funciona de maravilla! :D Muchisimas Gracias compañeros :D

Etiquetas: php, select
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 08:56.