No puedo encontrar el error alguien lo ve? (actualizando registro en db con php)

Iniciado por jdc, 5 Diciembre 2011, 23:16 PM

0 Miembros y 1 Visitante están viendo este tema.

jdc

No puedo encontrar el error, alguien lo ve?

Código (php) [Seleccionar]

<?php

 $usuario 
= @$_POST['editUser'];
 
$pass = @$_POST['editPass'];
 
$tipo = @$_POST['editTipo']; //int
 
$sede = @$_POST['editSede']; //int
 
$hash md5($usuario.$pass);
 
$id = @$_POST['idetable']; //int

 
$query mysql_query("UPDATE `sistema`.`usuarios` SET `usuario` = \'$usuario\', `passwd` = \'$hash\', `tipo` = \'$tipo\', `sede` = \'$tipo\' WHERE `usuarios`.`id` =\'$id\';"$link);
 
?>



Gracias ñ_ñ

Shell Root

Lo mismo de siempre, imprime la query y verifica su contenido.
Código (php) [Seleccionar]
$sql = "UPDATE `sistema`.`usuarios` SET `usuario` = \'$usuario\', `passwd` = \'$hash\', `tipo` = \'$tipo\', `sede` = \'$tipo\' WHERE `usuarios`.`id` =\'$id\';";
print $sql;
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

jdc

Doh toda la razon...

UPDATE `sistema`.`usuarios` SET `usuario` = \'\', `passwd` = \'fe703d2586565a194907f\', `tipo` = \'1\', `sede` = \'1\' WHERE `usuarios`.`id` =\'5\';





  • No esta recibiendo usuario
  • tengo que usar \" para las strings y nada para los enteros no?
A ver pruebo y te cuento

jdc

Cita de: Shell Root en  6 Diciembre 2011, 02:03 AM
Lo mismo de siempre, imprime la query y verifica su contenido.
Código (php) [Seleccionar]
$sql = "UPDATE `sistema`.`usuarios` SET `usuario` = \'$usuario\', `passwd` = \'$hash\', `tipo` = \'$tipo\', `sede` = \'$tipo\' WHERE `usuarios`.`id` =\'$id\';";
print $sql;


Gracias Shell Root quedo funcionando todo ok :) te pasaste!

Código (php) [Seleccionar]

<?php
 
 $usuario 
= @$_POST['editUser'];
 
$pass = @$_POST['editPass'];
 
$tipo = @$_POST['editTipo']; //int
 
$sede = @$_POST['editSede']; //int
 
$hash md5($usuario.$pass);
 
$id = @$_POST['idetable']; //int
 
 
$query mysql_query("UPDATE `sistema`.`usuarios` SET `usuario` = \"$usuario\", `passwd` = \"$hash\", `tipo` = \"$tipo\", `sede` = \"$tipo\" WHERE `usuarios`.`id` =\"$id\";"$link);
 
?>



En la Query habia problema de comillas y ademas habia un error mio, al tener un campo como disabled no enviaba los datos y cuando comparaba si estaba vacio siempre me daba true xD

Gracias otra vez :p

s00rk

Por que no usar simples comillas como ' , asi te ahorras las \ ?


"UPDATE `sistema`.`usuarios` SET `usuario` = '$usuario', `passwd` = '$hash', `tipo` = '$tipo', `sede` = '$tipo' WHERE `usuarios`.`id` ='$id';"

Las \, son comunmente usadas cuando tu tu string empieza por el mismo tipo de comillas y quiere imprimir ejemplo:

echo "hola como estas \"juan\"";
echo 'hola como estas \'juan\'';
echo "hola como estas 'juan'";
echo 'hola como estas "juan"';

Si empieza con " dentro de la cadena puedes poner ' directamente sin poner \ a menos que decees poner " ocuparas poner \ puesto que iniciaste con  " , bueno espero haberme explicado jejeje

jdc

Gracias, de hecho ya lo habia hecho ñ_ñ solo puse esto para mostrar como habia quedado funcionando, en mi sistema ya esta con comilla simple sin \

WHK

Y que pasa si realmente necesitas insertar un $?, además por asuntos de seguridad, evitar pasar clases y esas cosas me acostumbré a usar siempre comillas simples ya que ahi el código arbitrario no funciona, o sea:

echo "$algo"; imprime la variable
echo '$algo'; imprime $algo

De hecho habia un bug que permitia ejecución de código arbitrario en vbuletin por causa de esto.
Además recuerda que desde php no vale de nada enviar punto y coma ";" porque no puedes hacer multiples querys, recuerda que ya no estás en el phpmyadmin.

Así lo haría yo:
Código (php) [Seleccionar]
<?php
if(
isset($_POST['editUser']) and
isset($_POST['editPass']) and
isset($_POST['editTipo']) and
isset($_POST['editSede']) and
isset($_POST['idetable'])
){
if($query mysql_query('
if exists (
select id from `usuarios` where id = '
.(int)$_POST['idetable'].' limit 1
)
update `usuarios` set 
`usuario` = "'
.mysql_real_escape_string($_POST['editUser']).'",
`passwd` = "'
.md5($_POST['editUser'].$_POST['editPass']).'",
`tipo` = '
.(int)$_POST['editTipo'].',
`sede` = '
.(int)$_POST['editSede'].'
where `id`  = '
.(int)$_POST['idetable'].'
'
$link))
echo 'Editado!';
else
echo 'El usuario que se desea editar no existe.';
}
?>