Foros del Web » Programando para Internet » PHP »

Muy básico pero no doy con el error

Estas en el tema de Muy básico pero no doy con el error en el foro de PHP en Foros del Web. Saludos. En la línea 9 tengo un error pero sinceramente no lo veo. Agradezco su ayuda. Código PHP: <html> <head> <title>Ingresar</title> </head> <body> <?php $conexion  ...
  #1 (permalink)  
Antiguo 04/01/2015, 18:21
 
Fecha de Ingreso: enero-2015
Mensajes: 48
Antigüedad: 9 años, 3 meses
Puntos: 0
Muy básico pero no doy con el error

Saludos. En la línea 9 tengo un error pero sinceramente no lo veo. Agradezco su ayuda.
Código PHP:
<html>
<head>
<title>Ingresar</title>
</head>
<body>
<?php
$conexion 
mysql_connect("localhost""root""") or die("Problemas en la conexion");
mysql_select_db("base"$conexion) or die("Problemas en la seleccion de la base de datos");
mysql_query (''INSERT INTO datos (cedulaapellidonombreVALUES ('$_POST[cedula]','$_POST[apellido]','$_POST[nombre]')'' $conexion) or die("Problemas en el select" mysql_error());
mysql_close($conexion);
echo 
"Registro exitoso";
?>
</body>
</html>
  #2 (permalink)  
Antiguo 04/01/2015, 18:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Muy básico pero no doy con el error

Creo que estás confundiendo doble apóstrofe (') con comillas ("). No es lo mismo...

Código PHP:
Ver original
  1. mysql_query ("INSERT INTO datos (cedula, apellido, nombre)
  2. VALUES ('$_POST[cedula]','$_POST[apellido]','$_POST[nombre]')", $conexion)
  3. or die("Error en ejecución de consulta: " . mysql_error());
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 04/01/2015 a las 18:30
  #3 (permalink)  
Antiguo 04/01/2015, 18:29
Avatar de acopantepuy  
Fecha de Ingreso: junio-2010
Ubicación: Caracas
Mensajes: 21
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Muy básico pero no doy con el error

Debes cambiar ' ' por " y colocar la coma (,) despues de la sentencia SQL:


Código PHP:
Ver original
  1. mysql_query ("INSERT INTO datos (cedula, apellido, nombre) VALUES ('$_POST[cedula]','$_POST[apellido]','$_POST[nombre]')", $conexion) or die("Problemas en el select" . mysql_error());
  #4 (permalink)  
Antiguo 04/01/2015, 18:34
(Desactivado)
 
Fecha de Ingreso: enero-2013
Mensajes: 289
Antigüedad: 11 años, 3 meses
Puntos: 10
Respuesta: Muy básico pero no doy con el error

además de las comillas dobles, realmente se puede poner como ha puesto el amigo?

Yo siempre lo hago así

Código PHP:
Ver original
  1. mysql_query ("INSERT INTO datos (cedula, apellido, nombre) VALUES ('" . $_POST[cedula] . "','" . $_POST[apellido] . "','" . $_POST[nombre] . "'");
  #5 (permalink)  
Antiguo 04/01/2015, 18:37
 
Fecha de Ingreso: enero-2015
Mensajes: 48
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Muy básico pero no doy con el error

Gracias gnzsoloyo y acopantepuy ya me funcionó ese código.
  #6 (permalink)  
Antiguo 04/01/2015, 19:59
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Información Respuesta: Muy básico pero no doy con el error

Cita:
Iniciado por moginn Ver Mensaje
además de las comillas dobles, realmente se puede poner como ha puesto el amigo?

Yo siempre lo hago así

Código PHP:
Ver original
  1. mysql_query ("INSERT INTO datos (cedula, apellido, nombre) VALUES ('" . $_POST[cedula] . "','" . $_POST[apellido] . "','" . $_POST[nombre] . "'");
En optimizacion de codigo como nota informativa dire que la diferencia entre usar comillas dobles y simples es grande, debido a que cuando se usan comillas dobles php hace dos pasadas, una para sustitucion de variables y otra para la salida.
El uso que estas poniendo esta mal de perfomance, es mejor que uses comillas simples y que escapes las que usa la sentencia de mysql.
Por orden de perfomance seria de esta forma
1.Comillas simples y concatenacion.
2.Comillas dobles.
3.Comillas dobles y concatenacion.

No obstante esto apartir de PHP5 te da pocos milisegundos de optimizacion, y a no ser que tu programa sea extenso, ni lo notaras.
Una ventaja del uso de las comillas dobles es la concatenacion mas legible.
Cita:
$texto = " $uno $dos {$tres} {$cuatro} ";
Es mas legible queeste ejemplo de como seria con tu modo
Cita:
$texto = " " . $uno . " " . $dos . " " . $three . " " $four . " ";
__________________
http://www.roglastudios.es
  #7 (permalink)  
Antiguo 04/01/2015, 21:53
(Desactivado)
 
Fecha de Ingreso: enero-2013
Mensajes: 289
Antigüedad: 11 años, 3 meses
Puntos: 10
Respuesta: Muy básico pero no doy con el error

Cita:
Iniciado por Dalam Ver Mensaje
En optimizacion de codigo como nota informativa dire que la diferencia entre usar comillas dobles y simples es grande, debido a que cuando se usan comillas dobles php hace dos pasadas, una para sustitucion de variables y otra para la salida.
El uso que estas poniendo esta mal de perfomance, es mejor que uses comillas simples y que escapes las que usa la sentencia de mysql.
Pues no sabía que había tanta diferencia entre ambas, yo siempre las he usado indistintamente. Gracias por tu información!
  #8 (permalink)  
Antiguo 05/01/2015, 09:48
Avatar de Rodrigoespoz  
Fecha de Ingreso: agosto-2013
Ubicación: Quillota
Mensajes: 14
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Muy básico pero no doy con el error

espero que te sirva
Código PHP:
<?php 
$conexion 
mysql_connect("localhost""root""") or die("Problemas en la conexion"); 
mysql_select_db("base"$conexion) or die("Problemas en la seleccion de la base de datos"); 
if(isset(
$_POST['cedula'])){
$ced=$_POST[cedula];
$app=$_POST[apellido];
$nom=$_POST[nombre];
mysql_query (''INSERT INTO datos (cedulaapellidonombreVALUES ('$ced','$app','$nom')'' $conexion) or die("Problemas en el select" mysql_error()); 
mysql_close($conexion); 
echo 
"Registro exitoso"; }
?>
  #9 (permalink)  
Antiguo 05/01/2015, 10:39
Avatar de replica  
Fecha de Ingreso: noviembre-2004
Mensajes: 68
Antigüedad: 19 años, 5 meses
Puntos: 2
Respuesta: Muy básico pero no doy con el error

Cita:
Iniciado por Rodrigoespoz Ver Mensaje
espero que te sirva
Código PHP:
<?php 
$conexion 
mysql_connect("localhost""root""") or die("Problemas en la conexion"); 
mysql_select_db("base"$conexion) or die("Problemas en la seleccion de la base de datos"); 
if(isset(
$_POST['cedula'])){
$ced=mysqli_real_escape_string($_POST['cedula']);
$app=mysqli_real_escape_string($_POST['apellido']);
$nom=mysqli_real_escape_string($_POST['nombre']);
mysql_query ("INSERT INTO datos (cedula, apellido, nombre) VALUES ($ced,$app,$nom)"$conexion) or die("Problemas en el select" mysql_error()); 
mysql_close($conexion); 
echo 
"Registro exitoso"; }
?>
Ya que creas las variables para utilizarlas en la query, no las asignes directamente, pásales el real escape string por si acaso.

Edito: y las comillas de la query, que no las has corregido, y seguían siendo 2 comillas simples seguidas.
Aunque en realidad no sé qué resultado pueden dar esas comillas simples seguidas.

Última edición por replica; 05/01/2015 a las 10:42 Razón: Las comillas simples de la query.
  #10 (permalink)  
Antiguo 05/01/2015, 19:58
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: Muy básico pero no doy con el error

No esta mas decir que se migren a una clase de MySQL para alargar la vida de los scripts
Código PHP:
Ver original
  1. <?php
  2. $mysqli = new mysqli('host','username','password','database_name');
  3. if ($mysqli->connect_error) {
  4.     die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
  5. }
  6. if(isset($_POST['cedula'])){
  7.     $ced = $mysqli->real_escape_string($_POST['cedula']);
  8.     $app = $mysqli->real_escape_string($_POST['apellido']);
  9.     $nom = $mysqli->real_escape_string($_POST['nombre']);
  10.     if ($mysqli->query("INSERT INTO datos (cedula, apellido, nombre) VALUES ($ced,$app,$nom)")) {
  11.         echo "Registro exitoso";
  12.     }
  13. }
  14. $mysqli->close();
__________________
http://www.roglastudios.es

Etiquetas: html, mysql, registro, select
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 08:18.