Ver Mensaje Individual
  #16 (permalink)  
Antiguo 17/01/2014, 00:17
MeDxEc
 
Fecha de Ingreso: mayo-2013
Ubicación: Cúcuta
Mensajes: 98
Antigüedad: 11 años, 6 meses
Puntos: 2
Respuesta: ¿Como escapar comillas simples para que no generen errores en consulta?

Les hago caso y posteo mi primer código con sprintf... Como no, con errores. Echenle un ojo:

Código PHP:
Ver original
  1. <?php
  2.  
  3.             if (isset($_SESSION['nivel'])) {
  4.                 $titulo = $_POST['titulo'];
  5.                 $autor = $_POST['autor'];            
  6.                 $select_cat = $_POST['select_cat'];
  7.                 $select_cat = str_replace(" ", "_", $select_cat);
  8.                
  9.                 $txt_alt = $_POST['txt_alt'];
  10.                 $nombre_imagen = $_FILES['imagen']['name'];
  11.                 $nombre_imagen = str_replace(" ", "_", $nombre_imagen);
  12.                 $nombre_imagen = str_replace("?", "_", $nombre_imagen);
  13.                 $nombre_imagen = str_replace("¿", "_", $nombre_imagen);
  14.                 $nombre_imagen = str_replace("-", "_", $nombre_imagen);
  15.                 $nombre_imagen = str_replace("¡", "_", $nombre_imagen);
  16.  
  17.  
  18.                 if (empty($titulo) ||   empty($autor) || empty($select_cat) ||     empty($txt_alt)) {
  19.                     echo '
  20.                        <div class="container">
  21.                            <div class="center-block logig-form">
  22.                                <div class="panel panel-default">
  23.                                    <div class="panel-heading">Error</div>
  24.                                    <div class="panel-body">                                
  25.                                        <p>Debes llenar todos los campos, por favor, <a href="javascript:history.back(1)">vuelve</a>  e intentelo nuevamente.</p>                        
  26.                                    </div>
  27.                                </div>
  28.                            </div>
  29.                        </div> <!-- container  -->
  30.                    ';
  31.                 }else{
  32.  
  33.                     $carpeta = "img/imagenes/".$select_cat."/"."titulo"."/";
  34.                     mkdir($carpeta);
  35.                     $destino = $carpeta.$_FILES['imagen']['name'];
  36.                    
  37.                     copy($_FILES['imagen']['tmp_name'],$destino);
  38.  
  39.                     echo '<img src="'.$destino.'">';
  40.  
  41.                     if ($select_cat==='General') {
  42.                    
  43.                         $sql = sprintf("INSERT INTO imagenes_general (titulo, autor, txt_alt, ruta, fecha) VALUES ('%s', '%s', '%s', '%s', NOW())",mysql_real_escape_string($titulo),mysql_real_escape_string($autor),mysql_real_escape_string($txt_alt),mysql_real_escape_string($destino));
  44.                         mysql_query($sql,$connect);
  45.                         echo 'yay';
  46.  
  47.  
  48.                     }elseif ($select_cat === 'Distrito_comico') {
  49.  
  50.                         $sql = sprintf("INSERT INTO imagenes_distrito_comico (titulo, autor, txt_alt, ruta, fecha) VALUES ('%s', '%s', '%s', '%s', NOW())",mysql_real_escape_string($titulo),mysql_real_escape_string($autor),mysql_real_escape_string($txt_alt),mysql_real_escape_string($destino));
  51.                         echo $sql;
  52.                         mysql_query($sql,$connect);
  53.                         echo 'Yay';
  54.  
  55.                    
  56.                     }else{
  57.                         echo 'Error en la base de datos '.mysql_error();
  58.                     };
  59.                 }
  60.             }
  61.  
  62.  
  63.  
  64.  
  65.         ?>

El código se ejecuta de maravilla, imprimí los querys y se muestran tal y como debe ser, el problema es que no registra en la base de datos.

Esta es una página diferente a la que comentaba en anteriores mensajes pero me pareció bueno hacer el paralelo. ¿Alguna idea de por qué no escribe en la BD? Cabe resaltar que no bota error, tan solo no escribe.

Gracias :)

Una cosita... Leí por ahí que el uso de sprintf aumenta la seguridad del sitio ¿es esto cierto? ¿qué tiene de diferente a hacerlo de "la manera tradicional"?

Última edición por MeDxEc; 17/01/2014 a las 00:20 Razón: Duda extra