No puedo encontrar el error, alguien lo ve?
<?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 ñ_ñ
Lo mismo de siempre, imprime la query y verifica su contenido.
$sql = "UPDATE `sistema`.`usuarios` SET `usuario` = \'$usuario\', `passwd` = \'$hash\', `tipo` = \'$tipo\', `sede` = \'$tipo\' WHERE `usuarios`.`id` =\'$id\';";
print $sql;
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
Cita de: Shell Root en 6 Diciembre 2011, 02:03 AM
Lo mismo de siempre, imprime la query y verifica su contenido.
$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!
<?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
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
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 \
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:
<?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.';
}
?>