Foros del Web » Programando para Internet » PHP »

INSERT - No consigo que funcione!

Estas en el tema de INSERT - No consigo que funcione! en el foro de PHP en Foros del Web. Código PHP: <?PHP $name  =  $_REQUEST [ "name" ]; $mail  =  $_REQUEST [ "mail" ]; $coment  =  $_REQUEST [ "coment" ]; $idimg  =  $_REQUEST [ ...
  #1 (permalink)  
Antiguo 27/01/2012, 17:29
 
Fecha de Ingreso: abril-2011
Mensajes: 41
Antigüedad: 13 años
Puntos: 2
INSERT - No consigo que funcione!

Código PHP:
<?PHP

$name 
$_REQUEST["name"];
$mail $_REQUEST["mail"];
$coment $_REQUEST["coment"];
$idimg $_REQUEST["idimg"];

$intro = (NULL ", " $idimg ", " $name ", " $coment ", " $mail);

$conexion mysql_connect("localhost""XXXXXX""XXXXXX");
mysql_select_db ("daxx13_lfdao");
$intro mysql_query ("INSERT INTO comentarios (idcom, idimg, nombre, comentario, email) VALUES (" $intro ")") or die("error!");

?>
He probado muchas combinaciones (llevo 2 horas de probar y probar) y no he conseguido insertar NADA. Una ayudita... :)

Gracias!
  #2 (permalink)  
Antiguo 27/01/2012, 17:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: INSERT - No consigo que funcione!

Las cadenas de texto que insertas en la BD deben ir entre comillas.
Cita:
VALUES('x', 'y', '...')
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 27/01/2012, 17:35
 
Fecha de Ingreso: abril-2011
Mensajes: 41
Antigüedad: 13 años
Puntos: 2
Respuesta: INSERT - No consigo que funcione!

Cita:
Iniciado por pateketrueke Ver Mensaje
Las cadenas de texto que insertas en la BD deben ir entre comillas.
Dobles o simples?
  #4 (permalink)  
Antiguo 27/01/2012, 17:36
 
Fecha de Ingreso: julio-2007
Mensajes: 109
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: INSERT - No consigo que funcione!

Si guardas la coneccion en una variable, es porque lo vas a utilizar mas adelante,
y no veo q lo hagas,

$conexion = mysql_connect("localhost", "XXXXXX", "XXXXXX");

prueba asi,

$conexion = mysql_connect("localhost", "XXXXXX", "XXXXXX");
mysql_select_db ("daxx13_lfdao",$conexion);
$intro = mysql_query ("INSERT INTO comentarios (idcom, idimg, nombre, comentario, email) VALUES (" . $intro . ")",$conexion) or die("error!");

si no funciona, copia la estructura de la tabla ?
  #5 (permalink)  
Antiguo 28/01/2012, 05:55
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: INSERT - No consigo que funcione!

pregunto y de paso afirmo, jajaj.

No sera que si tengo 4 campos donde insertar, deben haber 4 variables para introducir?

Seria bueno que si te salta un error nos lo postees tambien
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #6 (permalink)  
Antiguo 28/01/2012, 07:01
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 12 años, 7 meses
Puntos: 31
Respuesta: INSERT - No consigo que funcione!

Estimado, dos cosas:
- tomar los datos con $_REQUEST puede ser peligroso
- no sanitizarlos tambien, posible sql injection

Consejos:
- Especifica explicitamente de donde vienen los datos, $_GET o $_POST
- hace trim() a los valores
- mysql_real_escape_string($var) para sanitizar los valores
- Separa el codigo reutilizable lo mas posible, por ejemplo el primer bloque de codigo lo podes meter un archivo php y con un include('archivo.php') reutilizar la conexion.

Código PHP:

<?php
// conexion a servidor mysql 

/* Datos de xonexion */
$dbhost 'localhost';
$dbuser 'root';
$dbpass 'password';

/* conecto */
$conn mysql_connect($dbhost$dbuser$dbpass) or die ('Error conectando al servidor mysql');

/* seleccion de db */
$dbname 'daxx13_lfdao';
mysql_select_db($dbname);
?>

<?php

// recibo los datos
$name $_REQUEST["name"];
$mail $_REQUEST["mail"];
$coment $_REQUEST["coment"];
$idimg $_REQUEST["idimg"];

// genero string para valores a ingresar
$values "null, '{$idimg}', '{$name}', '{$coment}', '{$mail}' ";

// genero la query de insercion
$query "INSERT INTO comentarios (idcom, idimg, nombre, comentario, email) VALUES ({$values})"

// ejecuto consulta de insercion
$result mysql_query ($query) or die("error!");

?>
  #7 (permalink)  
Antiguo 28/01/2012, 07:02
Avatar de ecarlevaro  
Fecha de Ingreso: octubre-2010
Ubicación: Paraná, Argentina
Mensajes: 80
Antigüedad: 13 años, 6 meses
Puntos: 13
Respuesta: INSERT - No consigo que funcione!

Pero pone los cuatro campos, y los cuatro valores, el primero es NULL.

Hay dos errores de sintáxis en la formación de la consulta, $intro ya tiene paréntesis, y la concatenas dentro de un string con paréntesis:

Código PHP:
Ver original
  1. $intro = (NULL . ", " . $idimg . ", " . $name . ", " . $coment . ", " . $mail);
  2. $intro = mysql_query ("INSERT INTO comentarios (idcom, idimg, nombre, comentario, email) VALUES (" . $intro . ")") or die("error!");

O quitas los paréntesis de $intro o quitas los paréntesis del string de mysql_query.

Y segundo, $intro = (NULL ¡ERROR! ¿y las comillas que indican que (NULL es una cadena?.

Consejo 1:
en el "or die('error!')" coloca la función mysql_error que te va a dar mas descripción durante la etapa de desarrollo de la aplicación y además concatenala con la consulta, que te imprima en pantalla la consulta SQL completa y ahi veras el error enseguida.

Consejo 2:
No te compliques con las comillas. Las comillas dobles PHP las interpreta hacia adentro reemplazando las variables por su valor (http://ar2.php.net/manual/es/language.types.string.php) por lo que tu $intro es mejor escribirla así:

Código PHP:
Ver original
  1. $intro = "(NULL,'$idimg','$name','$comment','$mail')";

Y listo. Recuerda quitar los dobles paréntesis.

Última edición por ecarlevaro; 28/01/2012 a las 07:03 Razón: Olvidé unas comillas

Etiquetas: mysql
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 12:36.