Foros del Web » Programando para Internet » PHP »

Error al insertar comillas en MYSQL

Estas en el tema de Error al insertar comillas en MYSQL en el foro de PHP en Foros del Web. Que tal, les comento que tengo un problema al querer insertar comillas en la base de datos. Resulta que estoy haciendo una tienda online y ...
  #1 (permalink)  
Antiguo 06/07/2016, 20:26
 
Fecha de Ingreso: julio-2014
Ubicación: Montevideo
Mensajes: 78
Antigüedad: 9 años, 9 meses
Puntos: 2
Pregunta Error al insertar comillas en MYSQL

Que tal, les comento que tengo un problema al querer insertar comillas en la base de datos. Resulta que estoy haciendo una tienda online y cuando por ejemplo en el campo descripcion tecnica pongo las pulgadas de una pantalla 10" por ej, me salia la pantalla en blanco, no salia el alert() y quedaba asi, eso pasa cuando no se ejecuto correctamente la consulta mysql, la cosa es que necesito insertar comillas, les dejo el codigo a ver si alguno sabe como se debe hacer para poder insertarlas sin problema. Saludos y gracias!!

Código PHP:
<?php  
include "../php/conexion.php";

function 
aleatorio(){
    
$an "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    
$su strlen($an) - 1;
    return 
substr($anrand(0$su), 1) .
            
substr($anrand(0$su), 1) .
            
substr($anrand(0$su), 1) .
            
substr($anrand(0$su), 1) .
            
substr($anrand(0$su), 1) .
            
substr($anrand(0$su), 1);
}

$cod aleatorio();

$dir_subida 'C:/xampp2/htdocs/productos_img/';

$fichero_subido $dir_subida basename($_FILES['foto_principal']['name']);
$url basename($_FILES['foto_principal']['name']);

move_uploaded_file($_FILES['foto_principal']['tmp_name'], $fichero_subido);


$fichero_subido $dir_subida basename($_FILES['foto1']['name']);
$url1 basename($_FILES['foto1']['name']);

move_uploaded_file($_FILES['foto1']['tmp_name'], $fichero_subido);
    

$fichero_subido $dir_subida basename($_FILES['foto2']['name']);
$url2 basename($_FILES['foto2']['name']);

move_uploaded_file($_FILES['foto2']['tmp_name'], $fichero_subido);
    

$fichero_subido $dir_subida basename($_FILES['foto3']['name']);
$url3 basename($_FILES['foto3']['name']);

move_uploaded_file($_FILES['foto3']['tmp_name'], $fichero_subido);
    
    



$sql "insert into productos(nombre,precio,descripcion,cat,subcat,creador,marca,nuevo,destacado,img,img1,img2,img3,fecha,cod,masinfo,info_tecnica,oferta) value (\"$_POST[nombre]\",\"$_POST[precio]\",\"$_POST[desc]\",\"$_POST[cat]\",\"$_POST[subcat]\",\"$_POST[creador]\",\"$_POST[marca]\",\"$_POST[nuevo]\",\"$_POST[destacado]\",\"$url\",\"$url1\",\"$url2\",\"$url3\",NOW(),\"$cod\",\"$_POST[masinfo]\",\"$_POST[info_tecnica]\",\"$_POST[oferta]\")";
            
$query $con->query($sql);
            
            
            if(
$query!=null){

                print 
"<script>alert('El producto fue guardado correctamente');window.location='index.php';</script>";
            }


?>
__________________
¿Necesitas Hosting Web? - [JSFIDDLE="www.intechservers.com/hosting"]Intech Servers Hosting[/JSFIDDLE]
¿Necesitas Sitio Web? - [JSFIDDLE="www.intechservers.com/web"]Intech Servers Web[/JSFIDDLE]
  #2 (permalink)  
Antiguo 06/07/2016, 20:28
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: Error al insertar comillas en MYSQL

info_tecnica,oferta) value (\"$_POST[nombre]\",\"

es VALUES
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #3 (permalink)  
Antiguo 06/07/2016, 20:49
 
Fecha de Ingreso: julio-2014
Ubicación: Montevideo
Mensajes: 78
Antigüedad: 9 años, 9 meses
Puntos: 2
Respuesta: Error al insertar comillas en MYSQL

Petit89, Ya puse eso como me dijiste y de todas formas sigue pasando lo mismo. Saludos
__________________
¿Necesitas Hosting Web? - [JSFIDDLE="www.intechservers.com/hosting"]Intech Servers Hosting[/JSFIDDLE]
¿Necesitas Sitio Web? - [JSFIDDLE="www.intechservers.com/web"]Intech Servers Web[/JSFIDDLE]
  #4 (permalink)  
Antiguo 06/07/2016, 21:36
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: Error al insertar comillas en MYSQL

Claro... eso era para comenzar... haciendo esto:

Código PHP:
Ver original
  1. \"$_POST[creador]\"

estas cometiendo un grabe error, tienes que aprender a escapear los contenidos de variables.. un ejemplo seria: http://php.net/manual/es/function.addslashes.php

Código PHP:
Ver original
  1. "...., VALUES (".addslashes($varibale_post).", ".addslashes($varibale_post).")";

y asi para las variables que puedan tener comillas en sus contenidos, claro este es un ejemplo de utilización directa en sentencia... antes de llegar a la sentencias puedes ocupar otro procedimiento para hacer esto mismo de una manera mas formal y enviar solamente la variable escapeada a la sentencia
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #5 (permalink)  
Antiguo 06/07/2016, 21:46
 
Fecha de Ingreso: julio-2014
Ubicación: Montevideo
Mensajes: 78
Antigüedad: 9 años, 9 meses
Puntos: 2
Respuesta: Error al insertar comillas en MYSQL

Esto me esta ganando jeje, hice como me dijiste y sigue pasando lo mismo, tal vez puse algo mal.

Código PHP:
$desc $_POST["desc"];
$masinfo $_POST["masinfo"];
$info_tecnica $_POST["info_tecnica"];


$sql "insert into productos(nombre,precio,descripcion,cat,subcat,creador,marca,nuevo,destacado,img,img1,img2,img3,fecha,cod,masinfo,info_tecnica,oferta) values (\"$_POST[nombre]\",\"$_POST[precio]\",".addslashes($desc).",\"$_POST[cat]\",\"$_POST[subcat]\",\"$_POST[creador]\",\"$_POST[marca]\",\"$_POST[nuevo]\",\"$_POST[destacado]\",\"$url\",\"$url1\",\"$url2\",\"$url3\",NOW(),\"$cod\",".addslashes($masinfo).",".addslashes($info_tecnica).",\"$_POST[oferta]\")"
__________________
¿Necesitas Hosting Web? - [JSFIDDLE="www.intechservers.com/hosting"]Intech Servers Hosting[/JSFIDDLE]
¿Necesitas Sitio Web? - [JSFIDDLE="www.intechservers.com/web"]Intech Servers Web[/JSFIDDLE]
  #6 (permalink)  
Antiguo 07/07/2016, 05:26
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, 4 meses
Puntos: 2658
Respuesta: Error al insertar comillas en MYSQL

Es preferible que uses apostrofos (') en lugar de comillas (") por dos razones:
1) Al crear la query como cadena de texto con comillas, los apostrofos quedan contenidos como caracteres.
2) MySQL usualmente usa los apostrofos como contenedores de cadenas de texto y las comillas para los nombres de objetos de base de datos, lo que podría causar comportamientos incorrectos. Esto último dependerá de al configuración del servidor de MySQL, pero no es raro que pase.

En síntesis:
Código PHP:
Ver original
  1. $sql = "insert into productos(nombre, precio, descripcion, cat, subcat, creador,
  2. marca, nuevo, destacado, img, img1, img2, img3, fecha, cod, masinfo, info_tecnica, oferta)
  3. values ('$_POST[nombre]', '$_POST[precio]', '".addslashes($desc).", '$_POST[cat]', '$_POST[subcat]',
  4. '$_POST[creador]', '$_POST[marca]', '$_POST[nuevo]', '$_POST[destacado]', '$url', '$url1', '$url2',
  5. '$url3', NOW(), '$cod\', '".addslashes($masinfo)."', '".addslashes($info_tecnica)."', '$_POST[oferta]')";
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 07/07/2016, 12:05
 
Fecha de Ingreso: julio-2014
Ubicación: Montevideo
Mensajes: 78
Antigüedad: 9 años, 9 meses
Puntos: 2
Respuesta: Error al insertar comillas en MYSQL

Intente como dijiste pero sigue sin funcionarme :(
__________________
¿Necesitas Hosting Web? - [JSFIDDLE="www.intechservers.com/hosting"]Intech Servers Hosting[/JSFIDDLE]
¿Necesitas Sitio Web? - [JSFIDDLE="www.intechservers.com/web"]Intech Servers Web[/JSFIDDLE]
  #8 (permalink)  
Antiguo 07/07/2016, 13:51
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: Error al insertar comillas en MYSQL

Aparte de solo copiar y pegar lo que aqui se te proporciona de codigo, tienes que analizarlo y entenderlo, si no, no avanzaras.. revisa bien:

Código PHP:
    $sql "INSERT INTO productos (nombre, precio, descripcion, cat, subcat, creador, 
    marca, nuevo, destacado, img, img1, img2, img3, fecha, cod, masinfo, info_tecnica, oferta) 
    VALUES ('$_POST[nombre]', '$_POST[precio]', '"
.addslashes($desc).", '$_POST[cat]', '$_POST[subcat]',
     '$_POST[creador]', '$_POST[marca]', '$_POST[nuevo]', '$_POST[destacado]', '$url', '$url1', '$url2', 
    '$url3', NOW(), '$cod', '"
.addslashes($masinfo)."', '".addslashes($info_tecnica)."', '$_POST[oferta]')"
$cod tenia un \, que al compañero se le fue... asi podrian haber mas errores, tienes que revisar, leer...
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #9 (permalink)  
Antiguo 07/07/2016, 14:07
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, 4 meses
Puntos: 2658
Respuesta: Error al insertar comillas en MYSQL

Exactamente...
Copy+Paste no funciona. Tienes que revisar.

No vamos a hacer toda la tarea por ti, porque no es la idea, y porque además no tenemos tus codigos fuentes y tampoco tiempo para revisarte todo. Nosotros también tenemos tareas y trabajos propios.

Recuerda que FDW es para ayudar, para guiar. El resto del camino tiene que ser tuyo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 08/07/2016, 06:47
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Error al insertar comillas en MYSQL

El problema es que usar directamente las variables en tu consulta es un peligro, es algo totalmente inseguro y más aún si no haced validación alguna para asedurarte de que recibes lo que esperas.

Se llama injeccion SQL.

En php puedes encontrar algunas funciones para prevenirlo y escapar los valores adecuadamente como por ejemplo mysql_real_escape_string()

En el primer enlace que te paso tienes recomendaciones y Técnicas de evitación.


En cuanto a addslashes() según el manual:
Cita:
Las funciones genéricas como addslashes() son útiles solamente en un entorno muy específico (p.ej., MySQL en un juego de caracteres monobyte con NO_BACKSLASH_ESCAPES deshabilitada), por lo que es mejor evitarlas.
__________________
Unset($vida['malRollo']);

Etiquetas: comillas, fecha, mysql, sql
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 14:22.