Foros del Web » Programando para Internet » PHP »

Consulta DELETE que no funciona no se por q

Estas en el tema de Consulta DELETE que no funciona no se por q en el foro de PHP en Foros del Web. $envio=mysql_query("DELETE FROM `usuarios` WHERE 'IDusuario' = '$id' LIMIT 1;"); Esta es mi consulta delete, me la ejecuta correctamente, incluso si la pongo en phpmyadmin como ...
  #1 (permalink)  
Antiguo 11/05/2005, 14:38
Avatar de raffskizze  
Fecha de Ingreso: marzo-2004
Ubicación: ...
Mensajes: 433
Antigüedad: 20 años, 1 mes
Puntos: 0
Consulta DELETE que no funciona no se por q

$envio=mysql_query("DELETE FROM `usuarios` WHERE 'IDusuario' = '$id' LIMIT 1;");

Esta es mi consulta delete, me la ejecuta correctamente, incluso si la pongo en phpmyadmin como consulta sql me la acepta y se muestra, pero ES QUE NO SE BORRA LA .... FILA

y en cambio es la misma consulta que hace el phpmyadmin dandole a eliminar, y asi si se elimina la fila, me estoy kedando rallao pero es q llevo una hora viendo diferencias y no existen, a ver si alguien sabe el truco por q no hay manera
__________________
echo ( www.tutorial-enlace.net == tutoriales gratis ) ? 'Aprenderas gratis !!' : 'No aprenderas !!';
  #2 (permalink)  
Antiguo 11/05/2005, 14:45
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 8 meses
Puntos: 15
Esta linea es para el IDusuario si es de tipo char
$envio=mysql_query("DELETE FROM usuarios WHERE IDusuario = '".$id."'");

Esta es para el IDusuario si es de tipo integer
$envio=mysql_query("DELETE FROM usuarios WHERE IDusuario = ".$id);
  #3 (permalink)  
Antiguo 11/05/2005, 15:07
Avatar de raffskizze  
Fecha de Ingreso: marzo-2004
Ubicación: ...
Mensajes: 433
Antigüedad: 20 años, 1 mes
Puntos: 0
que va tio, lo raro es q da fallo y todo pero nada, no es por la variable por q se introduce bien, es que aunke ponga:

$envio=mysql_query("DELETE FROM usuarios WHERE IDusuario = '92' ;");

ni por esas se borra, y la consulta sale como si hubiera tenido exito, :S
__________________
echo ( www.tutorial-enlace.net == tutoriales gratis ) ? 'Aprenderas gratis !!' : 'No aprenderas !!';
  #4 (permalink)  
Antiguo 11/05/2005, 15:08
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 8 meses
Puntos: 15
Quitale el punto y coma despues de 92.
  #5 (permalink)  
Antiguo 11/05/2005, 15:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por dwaks
Esta linea es para el IDusuario si es de tipo char
$envio=mysql_query("DELETE FROM usuarios WHERE IDusuario = '".$id."'");

Esta es para el IDusuario si es de tipo integer
$envio=mysql_query("DELETE FROM usuarios WHERE IDusuario = ".$id);
Cara a sintax SQL .. usar o no comillas dependiendo del tipo de dato es lo de menos .. De hecho usando comillas:
Código PHP:
$envio=mysql_query("DELETE FROM usuarios WHERE IDusuario = '".$id."'"); 
Evitas muchos errores "catastroficos" que arroja si empiezas a jugar con "SQL injection". (haz la prueba .. pon cadenas . .espacios en lugar de un "entero" .. )

Un saludo,
  #6 (permalink)  
Antiguo 11/05/2005, 15:35
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 8 meses
Puntos: 15
Si en realidad no sabia que php permitia eso, ya que soy muy estricto conmigo a la hora de manipular datos y sus tipos, se que php es flexible y ahora veo que mas aun.

Pero para los que es de vital importancia los tipos de datos es mejor tratar de diferenciarlo, eso lo digo ya que con otros lenguajes es vital.

Ya me aclaraste que php es flexible y es bueno saberlo.
  #7 (permalink)  
Antiguo 11/05/2005, 16:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Es que justamente eso es lo que pretendía comentarte ... NO es PHP sino la sintax de SQL y el SQL particular de Mysql el que permite eso .. para "PHP" todaaaaa la sentencia SQL es un simple "string" (lo compongas con datos de tipo numérico o no ..)

Un saludo,
  #8 (permalink)  
Antiguo 11/05/2005, 16:19
Avatar de raffskizze  
Fecha de Ingreso: marzo-2004
Ubicación: ...
Mensajes: 433
Antigüedad: 20 años, 1 mes
Puntos: 0
nada el problema eran los ' ' del IDusuario, si lo pongo asi 'IDusuario' no va, aunque la consulta la de como buena, :S estas cosas son las que a mi me matan, por que se supone que lo mismo que es flexible el php y el mysql para los enteros o variables texto, por que cuando el mysql hace una consulta pone los ' ' y cuando la haces tu desde php no los puede llevar :S, el libro de reclamaciones quiero !! jaja

Otra cosa cluster, si hago la consulta asi:
"DELETE FROM tutoriales WHERE IDtutorial = '$id' "

Como afecta eso a una injection, es que es algo que no lo comprendo, por mucho que modifiquen la variable $id que van a conseguir sacar de ahi, aun suponiendo q en ves de un delete fuera un select ??

Muchas gracias por la ayuda compañeros !!
__________________
echo ( www.tutorial-enlace.net == tutoriales gratis ) ? 'Aprenderas gratis !!' : 'No aprenderas !!';
  #9 (permalink)  
Antiguo 12/05/2005, 11:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Como afecta eso a una injection, es que es algo que no lo comprendo, por mucho que modifiquen la variable $id que van a conseguir sacar de ahi, aun suponiendo q en ves de un delete fuera un select ??
Puedes leer un artículo al respecto que comenta todo el tema:
http://www.spidynamics.com/papers/SQ...WhitePaper.pdf

Otro detalle sobre sintax "SQL" .. los ` (acento invertido?..) se usan para nombrar de forma segura a nombres de tablas y campos (no los '). Por ejemplo .. Mysql maneja un grupo de "palabras reservadas" que si las usas como nombres de campos .. te daría problemas .. en esos casos nombraríamos al campo/tabla entre:`nombre_campo_o_tabla`

Teóricamente .. así deberíamos usarlo siempre .. aunque la costumbre más bien es la de "tener cuidado" de no usar un nombre "reservado" simplemente.

Un saludo,
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 18:32.