Foros del Web » Programando para Internet » PHP »

Cómo uso variables de un form en una consulta Mysql?

Estas en el tema de Cómo uso variables de un form en una consulta Mysql? en el foro de PHP en Foros del Web. resulta que tengo este código que recibo de un formulario y no se cómo meter las variables campo,antiguo y nuevo en el sect y luego ...
  #1 (permalink)  
Antiguo 04/06/2012, 12:55
 
Fecha de Ingreso: febrero-2012
Ubicación: Madrid
Mensajes: 48
Antigüedad: 12 años, 2 meses
Puntos: 1
Cómo uso variables de un form en una consulta Mysql?

resulta que tengo este código que recibo de un formulario y no se cómo meter las variables campo,antiguo y nuevo en el sect y luego en el update, para que me lo pille el SQL. lo he probado con @campo, y otras formas y nada. cómo se mete??

gracias



$campo=$_POST[campo];
$antiguo=$_POST[antiguo];
$nuevo=$_POST[nuevo];


$registro = mysql_query("SELECT @campo FROM CLIENTES WHERE @campo = @antiguo");
$numero=mysql_num_rows($registro);

mysql_query("UPDATE CLIENTES SET @campo=@nuevo WHERE @campo = @antiguo",$conexion)or die("Problemas al realizar la consulta:".mysql_error());
  #2 (permalink)  
Antiguo 04/06/2012, 13:00
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Cómo uso variables de un form en una consulta Mysql?

no va con @, va con $ asi:

Código PHP:
Ver original
  1. $campo=$_POST[campo];
  2. $antiguo=$_POST[antiguo];
  3. $nuevo=$_POST[nuevo];
  4.  
  5. $registro = mysql_query("SELECT " . $campo . " FROM CLIENTES WHERE " . $campo . " = '" . $antiguo . "'");
  6. $numero=mysql_num_rows($registro);
  7.  
  8. mysql_query("UPDATE CLIENTES SET " . $campo . "=" . $nuevo . " WHERE " . $campo . "=" . $antiguo, $conexion) or die("Problemas al realizar la consulta:".mysql_error());
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #3 (permalink)  
Antiguo 04/06/2012, 13:01
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: Cómo uso variables de un form en una consulta Mysql?

No entiendo muy bien lo que necesitas , pero la estructura para hacer el update es algo como esto:

Código PHP:
Ver original
  1. $query = "UPDATE CLIENTES set campo='".$campo."' where clave=".$CLAVE;

Saludos
  #4 (permalink)  
Antiguo 04/06/2012, 13:13
 
Fecha de Ingreso: febrero-2012
Ubicación: Madrid
Mensajes: 48
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Cómo uso variables de un form en una consulta Mysql?

Gracias a los 2, pero no me funciona.

de todas formas, seguro que está bien puesto? porque no entiendo por qué por ejemplo esto que me poneis, tiene unas comillas simples en una variable y en la otra no:

Código:
$query = "UPDATE CLIENTES set campo='".$campo."' where clave=".$CLAVE;
para mí que hay algo mal no se, voy a revisar, en teoría el código de SQL va entre comillas dobles, y las variables va con . $VARIABLE . y ya, no? algo así como:

"Select" . $campo. "from" .$tabla. "where" .$campo. "=2";

no se por poner un ejemplo. es que no me lo está pillando no se por qué...
  #5 (permalink)  
Antiguo 04/06/2012, 13:19
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Cómo uso variables de un form en una consulta Mysql?

No te funciona porque seguramente los querys esten mal.. imprimilo por pantalla con todas las variables concatenadas y te vas a dar cuenta de que esta mal.

Código PHP:
Ver original
  1. echo "SELECT " . $campo . " FROM CLIENTES WHERE " . $campo . " = '" . $antiguo . "'";
  2. echo "<br />";
  3. echo "UPDATE CLIENTES SET " . $campo . "=" . $nuevo . " WHERE " . $campo . "=" . $antiguo;

Asi ves bien que es lo que esta haciendo.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #6 (permalink)  
Antiguo 04/06/2012, 13:27
 
Fecha de Ingreso: febrero-2012
Ubicación: Madrid
Mensajes: 48
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Cómo uso variables de un form en una consulta Mysql?

Cita:
Iniciado por linuxzero Ver Mensaje
No te funciona porque seguramente los querys esten mal.. imprimilo por pantalla con todas las variables concatenadas y te vas a dar cuenta de que esta mal.

Código PHP:
Ver original
  1. echo "SELECT " . $campo . " FROM CLIENTES WHERE " . $campo . " = '" . $antiguo . "'";
  2. echo "<br />";
  3. echo "UPDATE CLIENTES SET " . $campo . "=" . $nuevo . " WHERE " . $campo . "=" . $antiguo;

Asi ves bien que es lo que esta haciendo.

Muchas gracias.

El problema, es que en el update, cuando quiere comparar los campos, al ser cadenas, los compara sin las comillas simples, he puesto la misma sentencia con comillas simples, y lo hace perfectamente, voy a mirar el código para añadirle las comillas simples a ver si así funciona

lo raro es que en el select, le mete las comilas y lo encuentra perfectamente, no entiendo por qué xDD

edito: ah vale, porque en el select le metiste las comillas simples y en el updte no, debe ser eso
  #7 (permalink)  
Antiguo 04/06/2012, 13:44
 
Fecha de Ingreso: febrero-2012
Ubicación: Madrid
Mensajes: 48
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Cómo uso variables de un form en una consulta Mysql?

Vale ya me lo actualiza, gracias
  #8 (permalink)  
Antiguo 04/06/2012, 13:57
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Cómo uso variables de un form en una consulta Mysql?

Cita:
Iniciado por oskuro Ver Mensaje
Vale ya me lo actualiza, gracias
Excelente, exito con eso
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #9 (permalink)  
Antiguo 04/06/2012, 14:39
 
Fecha de Ingreso: febrero-2012
Ubicación: Madrid
Mensajes: 48
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Cómo uso variables de un form en una consulta Mysql?

Cita:
Iniciado por linuxzero Ver Mensaje
Excelente, exito con eso

ahora lo que me pasa es raro. La variable $numero me "funciona" si busco un campo que es numérico, ahora bien, si busco uno que no lo es no se por qué la variable no se carga con ningún valor, sabeis por qué puede ser? si saco el update del if de la zona del else, lo actualiza, pero si lo meto dentro siempre dice que no hay registros y no lo actualiza porque la variablre $numero no toma ningún valor si el campo es distinto de numérico.

$registro = mysql_query("SELECT ". $campo ." FROM CLIENTES WHERE ". $campo ." = ". $antiguo ."");
$numero=mysql_num_rows($registro);


if($numero==0)
{
echo "No hay registros con ese ". $campo .", verifica el valor introducido";
}else{
mysql_query("UPDATE CLIENTES SET ". $campo ."='" . $nuevo . "' WHERE ". $campo ." = '" . $antiguo . "'",$conexion)or die("Problemas al realizar la consulta:".mysql_error());
echo "Actualización correcta";
}
  #10 (permalink)  
Antiguo 04/06/2012, 14:46
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Cómo uso variables de un form en una consulta Mysql?

Que valores les estas dando a $campo y $antiguo para cuando decis que no te anda?
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #11 (permalink)  
Antiguo 04/06/2012, 14:49
 
Fecha de Ingreso: febrero-2012
Ubicación: Madrid
Mensajes: 48
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Cómo uso variables de un form en una consulta Mysql?

Cita:
Iniciado por linuxzero Ver Mensaje
Que valores les estas dando a $campo y $antiguo para cuando decis que no te anda?

pues por ejemplo $campo puede ser: email, tfno1,tfno2,ext.... ext es numérico por ejemplo y el email varchar, y $antiguo es el valor que tenía antes ese campo, es decir si elijo email:

$campo=email
$antiguo='[email protected]'
$nuevo='[email protected]'

en ese caso pues me da problemas por ejemplo si elijo un campo numérico como ext con valores tipo

$antiguo=777
$nuevo=999

va bien

y el caso es que como muestro las consultas y update con el echo, si ejecuto eso directamente en SQL me lo hace perfectamente, así que no entiendo por qué me dice que no existe ningún registro cuando lo meto a mano y lo encuentra sin problemas

Última edición por oskuro; 04/06/2012 a las 14:55
  #12 (permalink)  
Antiguo 04/06/2012, 14:55
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Cómo uso variables de un form en una consulta Mysql?

No es una buena idea generalizar la consulta a ese extremo... porque pasan este tipo de cosas... igualmente si $campo=email esta asi en tu codigo, esta mal, tiene que ir entre comillas, por mas que despues lo uses en la consulta, porque email asi escrito no es nada...

pero reitero, no es buena practica eso.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #13 (permalink)  
Antiguo 04/06/2012, 15:00
 
Fecha de Ingreso: febrero-2012
Ubicación: Madrid
Mensajes: 48
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Cómo uso variables de un form en una consulta Mysql?

Tengo el código así, y en otro archivo .php el formulario que llama a este:

<?php

include("conexion.php");
//guardo en una variable la conexión al host, para luego usarla en la conexión a la bbdd
$conexion = mysql_connect($host,$user,$pw)or die("Problemas al conectar al host");
//uso la variable conexión para conectarme a la base de datos
mysql_select_db($bd,$conexion)or die("Problemas al conectar a la base de datos");

$campo=$_POST[campo];
$antiguo=$_POST[antiguo];
$nuevo=$_POST[nuevo];



echo "SELECT ". $campo ." FROM CLIENTES WHERE ". $campo ." = '" . $antiguo . "'";
echo "<br />";
echo "UPDATE CLIENTES SET ". $campo ."='" . $nuevo . "' WHERE ". $campo ." = '" . $antiguo . "'";


$registro = mysql_query("SELECT ". $campo ." FROM CLIENTES WHERE ". $campo ." = ". $antiguo ."");
$numero=mysql_num_rows($registro);


if($numero==0)
{
echo "No hay registros con ese ". $campo .", verifica el valor introducido";
}else{
mysql_query("UPDATE CLIENTES SET ". $campo ."='" . $nuevo . "' WHERE ". $campo ." = '" . $antiguo . "'",$conexion)or die("Problemas al realizar la consulta:".mysql_error());
echo "Actualización correcta";
}

mysql_close($conexion);





?>
<html><p>
<input name="button" type="button" onclick="window.close();" value="Cerrar esta ventana" /> </html>

Etiquetas: formulario, mysql, registro, sql, variables
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 13:31.