Hola he conseguido enviar datos por hidden y parto de esta "salida"
http://holamundo.es/actrfi.php?medad=10&clave=254219&enviar=Insertar+Datos
Intento recuperar los datos de
$cla=$_GET['clave'];
$edad=$_GET['medad'];
para ejecutar
$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.
estás usando la funciones de mysql_error para ver si hay error en la petición?
he añadido esto pero no me aparece nada:
echo mysql_error($qry) . ": " . mysql_error($qry) . "\n";
pero nada no sale nada.
y mysql_affected_rows te da 0?
si es así el where está mal
Nada no me ejecuta nada...creo que estoy un poco "bloqueado" hoy.
Solo una cosa:
http://holamundo.es/actrfi.php?medad=10&clave=254219&enviar=Insertar+Datos
Quisiera poner que me "sacara" los valores de medad y clave con echo
No debería ser así?
include("conexion.php");
$cla=$_GET['clave'];
$edad=$_GET['medad'];
<?php
$conexion=mysql_connect("localhost","osc","@due1111") or die("Problemas en la conexion");
mysql_select_db("osc",$conexion) or die("Problemas en la selección de la base de datos");
echo $cla;
echo $edad;
?>
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.
al WHERE de la matricula le faltan las comillas.
$qry=mysql_query("UPDATE alumnos SET Edad=$edad WHERE MATRICULA='$cla' ");
A todo esto de donde rayos saca el $cla? xD asumi que era un string :xD
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:
http://blif.eu/holamundo.php?medad=10&clave=2542&enviar=Insertar+Datos
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....
$sql="UPDATE alumnos SET Edad='$_GET["medad"]' WHERE MATRICULA='$_GET["clave"]' ";
NAda, tampoco con esto
$sql="UPDATE alumnos SET Edad='htmlspecialchars($_GET["medad"])' WHERE MATRICULA='htmlspecialchars($_GET["clave"])' ";
¿Cómo debiera hacerlo?
$edad = (int) $_GET['medad'];
$clave = (int) $_GET['clave'];
$sql = "UPDATE alumnos SET Edad='$edad' WHERE MATRICULA='$clave'";
NO USAR mysql_, ESTA OBSOLETO.
http://php.net/manual/en/function.mysql-connect.php
Saludos
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:
$edad = $_GET['medad'];
$clave = $_GET['clave'];
Hazle un
echo $edad;
echo $clave;
die();
Revisa que las variables tienen el valor correspondiente, si es así. Esto debería funcionar:
$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
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
Cita de: 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).
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:
$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
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¡¡¡
Cita de: DarK_FirefoX en 3 Abril 2015, 14:53 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:
$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.
Cita de: MinusFour en 3 Abril 2015, 15:16 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
Cita de: bgnumis en 3 Abril 2015, 15:11 PM
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
die();