Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: bgnumis en 2 Abril 2015, 20:03 pm



Título: Refrescar datos
Publicado por: bgnumis en 2 Abril 2015, 20:03 pm
Hola he conseguido enviar datos por hidden y parto de esta "salida"

Código
  1.  
  2. http://holamundo.es/actrfi.php?medad=10&clave=254219&enviar=Insertar+Datos
  3.  
  4.  


Intento recuperar los datos de

Código
  1. $cla=$_GET['clave'];
  2. $edad=$_GET['medad'];

para ejecutar

Código
  1. $qry=mysql_query("UPDATE alumnos SET Edad=$edad WHERE MATRICULA=$cla ");

Pero no me modifica el registro MATRICULA del alumno "$cla" con el valor $edad en el campo Edad de la tabla alumnos.

¿Estoy procediendo mal?

Sé por otras preguntas que debo utilizar mysqli pero necesito un tiempo para mirarlo y adaptar los codigos que ya me van.

Mod: Temas sobre PHP al subforo de PHP. Utilizar etiquetas GeSHi para códigos.


Título: Re: Refrescar datos
Publicado por: engel lex en 2 Abril 2015, 20:23 pm
estás usando la funciones de mysql_error para ver si hay error en la petición?


Título: Re: Refrescar datos
Publicado por: bgnumis en 2 Abril 2015, 20:33 pm
he añadido esto pero no me aparece nada:

Código
  1. echo mysql_error($qry) . ": " . mysql_error($qry) . "\n";

pero nada no sale nada.


Título: Re: Refrescar datos
Publicado por: engel lex en 2 Abril 2015, 20:43 pm
y mysql_affected_rows te da 0?

si es así el where está mal


Título: Re: Refrescar datos
Publicado por: bgnumis en 2 Abril 2015, 22:32 pm
Nada no me ejecuta nada...creo que estoy un poco "bloqueado" hoy.

Solo una cosa:

Código
  1.  
  2. http://holamundo.es/actrfi.php?medad=10&clave=254219&enviar=Insertar+Datos
  3.  
  4.  

Quisiera poner que me "sacara" los valores de medad y clave con echo

No debería ser así?

Código
  1.  
  2. include("conexion.php");
  3.  
  4. $cla=$_GET['clave'];
  5. $edad=$_GET['medad'];
  6.  
  7. <?php
  8. $conexion=mysql_connect("localhost","osc","@due1111") or die("Problemas en la conexion");
  9. mysql_select_db("osc",$conexion) or die("Problemas en la selección de la base de datos");  
  10.  
  11. echo $cla;
  12. echo $edad;
  13. ?>
  14.  
  15.  

Si consigo sacar (que se vean) los datos entonces sé que donde lo que estoy fallando es el UPDATE.

A ver si me podeis dar un capón y a yudarme.

Gracias mil por adelantado.


Título: Re: Refrescar datos
Publicado por: Pablo Videla en 2 Abril 2015, 22:42 pm
al WHERE de la matricula le faltan las comillas.

Código
  1.  
  2. $qry=mysql_query("UPDATE alumnos SET Edad=$edad WHERE MATRICULA='$cla' ");
  3.  

A todo esto de donde rayos saca el $cla? xD asumi que era un string   :xD


Título: Re: Refrescar datos
Publicado por: bgnumis en 3 Abril 2015, 09:43 am
Perdonad,

No encuentro el modo.

Reformulo la duda a ver si así me conseguís ayudar (mil gracias de antemano):

Yo "envio" datos y me sale esta página:

Código
  1.  
  2. http://blif.eu/holamundo.php?medad=10&clave=2542&enviar=Insertar+Datos
  3.  


Y quiero "cogiendo" para el usuario con clave "2542" cambiarle la Edad a 10


Mi base de datos se llama aldef

Y la tabla donde está el registro que quiero actualizar alumnos

Yo conecto a la base de datos....y....


Código
  1.  
  2. $sql="UPDATE alumnos SET Edad='$_GET["medad"]' WHERE MATRICULA='$_GET["clave"]' ";
  3.  
  4.  

NAda, tampoco con esto
Código
  1.  
  2. $sql="UPDATE alumnos SET Edad='htmlspecialchars($_GET["medad"])' WHERE MATRICULA='htmlspecialchars($_GET["clave"])' ";
  3.  
  4.  

¿Cómo debiera hacerlo?




Título: Re: Refrescar datos
Publicado por: #!drvy en 3 Abril 2015, 10:48 am
Código
  1. $edad  = (int) $_GET['medad'];
  2. $clave = (int) $_GET['clave'];
  3.  
  4. $sql = "UPDATE alumnos SET Edad='$edad' WHERE MATRICULA='$clave'";


NO USAR mysql_, ESTA OBSOLETO.
http://php.net/manual/en/function.mysql-connect.php

Saludos


Título: Re: Refrescar datos
Publicado por: DarK_FirefoX en 3 Abril 2015, 13:34 pm
El primer problemita que vi fue lo de las comillas, pero veo que ya te lo aclararon! por otro lado, ¿Dices que las variables tienen el valor que debe tener?

O sea, si haces:

Código
  1. $edad  = $_GET['medad'];
  2. $clave = $_GET['clave'];

Hazle un

Código
  1. echo $edad;
  2. echo $clave;
  3. die();

Revisa que las variables tienen el valor correspondiente, si es así. Esto debería funcionar:

Código
  1. $sql = "UPDATE alumnos SET Edad = '$edad' WHERE MATRICULA = '$clave'";

Asumiendo, que los nombres de los campos, y de la tabla a los que te refieres en la query estén bien.

Dinos como te fue con esto.

Saludos

 


Título: Re: Refrescar datos
Publicado por: MinusFour en 3 Abril 2015, 14:21 pm
No es necesario poner comillas ahi si es un campo INT. Las comillas se usan para literales de tipo string (varchar, text, etc). ¿Tu servidor es Windows? Es posible que tu sistema sea case-sensitive y 'MATRICULA', 'Edad', 'alumnos' no sea un match exacto de tus campos:

https://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html


Título: Re: Refrescar datos
Publicado por: DarK_FirefoX en 3 Abril 2015, 14:53 pm
No es necesario poner comillas ahi si es un campo INT. Las comillas se usan para literales de tipo string (varchar, text, etc).

Entendido! No estaba muy seguro de esto, a veces me funcionaba y otras no, pregunto yo ahora sobre las comillas. Para poner el valor de la variable en la query y no usar las comillas porque el valor de la variable es un INT, tengo que castearla como INT en la query?, o sea:

Código
  1. $sql = "UPDATE alumnos SET Edad = ".((int)$edad)." WHERE MATRICULA = ".((int)$clave)."";

^ Está eso bien? O el simplemente si no le pongo la comilla lo toma como un INT


Título: Re: Refrescar datos
Publicado por: bgnumis en 3 Abril 2015, 15:11 pm
Hola ya lo he conseguido¡¡¡

Os daría un super abrazo pero no sé si os llegará (en plan amistad jeje).

Resulta creo que al poner die(); eliminaba el valor pero he quitado esa linea y Perfecto¡¡¡


Título: Re: Refrescar datos
Publicado por: MinusFour en 3 Abril 2015, 15:16 pm
Entendido! No estaba muy seguro de esto, a veces me funcionaba y otras no, pregunto yo ahora sobre las comillas. Para poner el valor de la variable en la query y no usar las comillas porque el valor de la variable es un INT, tengo que castearla como INT en la query?, o sea:

Código
  1. $sql = "UPDATE alumnos SET Edad = ".((int)$edad)." WHERE MATRICULA = ".((int)$clave)."";

^ Está eso bien? O el simplemente si no le pongo la comilla lo toma como un INT
No tienes porque hacer un casting. Pero para variables que continenen datos introducidos por el usuario puedes forzar el dato recibido a entero. De esta forma te aseguras que en la query no tengas valores introducidos diferentes a enteros (e.g. sqli). En el where si encuentra caracters sin comilla lo va a asociar con datos de otra fuente (tabla.campo) o si forma parte del lexico de mysql (OR, UNION, //, ##, etc) realiza las acciones correspondientes.


Título: Re: Refrescar datos
Publicado por: DarK_FirefoX en 3 Abril 2015, 16:09 pm
No tienes porque hacer un casting. Pero para variables que continenen datos introducidos por el usuario puedes forzar el dato recibido a entero. De esta forma te aseguras que en la query no tengas valores introducidos diferentes a enteros (e.g. sqli). En el where si encuentra caracters sin comilla lo va a asociar con datos de otra fuente (tabla.campo) o si forma parte del lexico de mysql (OR, UNION, //, ##, etc) realiza las acciones correspondientes.

Entendido! , muchas gracias, me percataré de esto a partir de ahora!  :D

Os daría un super abrazo pero no sé si os llegará (en plan amistad jeje).

Resulta creo que al poner die(); eliminaba el valor pero he quitado esa linea y Perfecto¡¡¡

Jajaja!
Por cierto, donde ponías
Código
  1. die();