Resultados 1 al 5 de 5

Tema: Guardar en Mysql cadena de texto con ' a través de PHP



  1. #1
    Chapuzillas Junior
    Fecha de ingreso
    08 feb, 18
    Mensajes
    5
    Agradecido: 0

    Guardar en Mysql cadena de texto con ' a través de PHP

    Buenas tardes,

    Tengo el siguiente código en php para guardar un comentario de texto:

    Código PHP:
        $coment $_POST['coment'];    $id_vap $_GET['id'];    $id_usu $_SESSION['id'];    $data_mod '0000-00-00 00:00:00';

            
    $insertar_com "INSERT INTO comentarios(comentario, id_vap, id_usu, data, data_mod) VALUES ('$coment', '$id_vap', '$id_usu', NOW(), '$data_mod')"
    A continuación hay las líneas de texto para conectarse a la base de datos e insertar la fila.

    El código me funciona bien siempre y cuando el texto no contenga ningún carácter ', ya que supongo que interfiere con las comillas de '$coment'

    Alguien me podría ayudar a solucionar éste problema?

    Muchas gracias de antemano,

    Un saludo!

  2. #2
    Chapuzillas a tener en cuenta Avatar de Moebius
    Fecha de ingreso
    11 dic, 17
    Mensajes
    103
    Agradecido: 36
    Hace mucho que no toco bases de datos, pero supongo que si lo encapsulas con Comillas dobles "" dentro te entran comillas simples. Eso sí, tendrías problemas con las comillas dobles, supongo.

    Creo que lo que mejor te vendrá, creo, es la parametrización de las sentencias (prepared statement o sentencias preparadas) y así de paso te proteges un poco contra SQLInjection.

    PHP: Sentencias Preparadas - Manual

    PHP: Sentencias preparadas y procedimientos almacenados - Manual

    Inyeccion SQL - Wikipedia, la enciclopedia libre

    Ataques de inyeccion SQL: que son y como protegerse - Pressroom HostaliaPressroom Hostalia

    PHP Prepared Statements


    Yo los leería todos que nunca está de más xD
    «Vivir es morir d e s p a c i o.»

  3. #3
    Gandalf el Gris Avatar de kakadeluxe
    Fecha de ingreso
    09 mar, 18
    Mensajes
    907
    Agradecido: 302
    Con esa forma de programar, siempre vas a tener problemas. Lo suyo es hacer lo que indica el compañero @Moebius

    He aquí un ejemplo
    $pdo = Database::connect();
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "INSERT INTO comentarios(comentario, id_vap, id_usu, data, data_mod) VALUES (?, ?, ?, ?, ?)";
    $q = $pdo->prepare($sql);
    $q->execute(array($coment, $id_vap, $id_usu, NOW(), $data_mod));
    Database::disconnect();

  4. #4
    Chapuzillas Junior
    Fecha de ingreso
    08 feb, 18
    Mensajes
    5
    Agradecido: 0
    Guardar en Mysql cadena de texto con ' a través de PHP Iniciado por kakadeluxe Guardar en Mysql cadena de texto con ' a través de PHP
    Con esa forma de programar, siempre vas a tener problemas. Lo suyo es hacer lo que indica el compañero @Moebius

    He aquí un ejemplo
    Hace mucho que no toco bases de datos, pero supongo que si lo encapsulas con Comillas dobles "" dentro te entran comillas simples. Eso sí, tendrías problemas con las comillas dobles, supongo.

    Creo que lo que mejor te vendrá, creo, es la parametrización de las sentencias (prepared statement o sentencias preparadas) y así de paso te proteges un poco contra SQLInjection.

    PHP: Sentencias Preparadas - Manual

    PHP: Sentencias preparadas y procedimientos almacenados - Manual

    Inyeccion SQL - Wikipedia, la enciclopedia libre

    Ataques de inyeccion SQL: que son y como protegerse - Pressroom HostaliaPressroom Hostalia

    PHP Prepared Statements


    Yo los leería todos que nunca está de más xD

    Leer mas: Guardar en Mysql cadena de texto con ' a través de PHP
    @Moebius @kakadeluxe De acuerdo, investigare un poco sobre las sentencias preparadas, muchas gracias por la información!

    Un saludo!

  5. #5
    Chapuzillas Junior
    Fecha de ingreso
    23 jul, 18
    Mensajes
    5
    Agradecido: 0
    Guardar en Mysql cadena de texto con ' a través de PHP Iniciado por ingenierobis Guardar en Mysql cadena de texto con ' a través de PHP
    Buenas tardes,

    Tengo el siguiente código en php para guardar un comentario de texto:

    Código PHP:
        $coment $_POST['coment'];    $id_vap $_GET['id'];    $id_usu $_SESSION['id'];    $data_mod '0000-00-00 00:00:00';

            
    $insertar_com "INSERT INTO comentarios(comentario, id_vap, id_usu, data, data_mod) VALUES ('$coment', '$id_vap', '$id_usu', NOW(), '$data_mod')"
    A continuación hay las líneas de texto para conectarse a la base de datos e insertar la fila.

    El código me funciona bien siempre y cuando el texto no contenga ningún carácter ', ya que supongo que interfiere con las comillas de '$coment'

    Alguien me podría ayudar a solucionar éste problema?

    Muchas gracias de antemano,

    Un saludo!
    Mirate el mysqli:real_escape_string, lo más correcto suele ser parametrizar las consultas como te han dicho arriba, meter variables PHP directamente al SQL es una chapuza, no recomendable en entornos públicos. En el mejor de los casos puede pasarte lo que a ti que falle y en el peor de los casos que entre alguien que sepa y te borre la BD...

Etiquetas para este tema

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •