Comunidad de diseño web y desarrollo en internet online

problema con '$_post' y posterior uso en un mysql query

Citar            
MensajeEscrito el 06 Ago 2011 05:25 am
Que tal gente, vuelvo después de un tiempo de desaparecer de este foro.
Tengo una duda que me esta comiendo la cabeza
estoy enviando a través de Jquery, una variable, como parametro de un Load:

Código Javascript :

$(".btn").click(function (){
            $("#destiny").show();
            var valor = $(this).attr("name");
            $(".texto").load("php/destiny.php", {categoria:valor});
            $(".btn").hide();
            return false;
                 });


Al parecer al cargar el archivo php la variable llega sin problema, porque incluso el titulo lo muestro a través de ella:

Código PHP :

<?
$categ = $_POST['categoria'];
?>
<h2>
<?
echo $categ;
?>
</h2>


Pero luego...cuando uso esa variable para limitar un query:

Código PHP :

$consulta2 = "SELECT subcategoria FROM subcategorias WHERE categoria = $categ";


...me aparece el siguiente error:

Unknown column 'producto' in 'where clause'

.
Cabe destacar que si en el query pongo '$categ' en vez de $categ, directamente no aparece ni el error, ni lo que busco que aparezca.

como ultimo dato hice una prueba

Código PHP :

if($_POST['categoria'] =='producto'){
echo 'ok';
}else{
echo 'shit';
}


Y la devolución es "shit" :lol:

Bueno espero alguien lea y se le ocurra alguna solución
gracias a todos de antemano
saludos

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

chrome
Citar            
MensajeEscrito el 06 Ago 2011 01:16 pm
Si el campo "categoria" es un varchar o text o cualquier otro campo que almacene strings, entonces al hacer la comparación en la sentencia SQL, el contenido de $categ debe estar entre comillas.

Código PHP :

$consulta2 = "SELECT subcategoria FROM subcategorias WHERE categoria = '".$categ"'";

De otra forma MySQL asume que el contenido de $categ es el nombre de un campo.
En el primer caso que comentas, el del error, sucedió eso, MySQL asumió que "producto" es el nombre de un campo de la tabla subcategoria y que éste no existe en esa tabla. En el segundo caso no hubo error pero tampoco te devolvió nada simplemente porque en la tabla no había ningún registro que cumpliera la condición.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 06 Ago 2011 07:47 pm
DriverOp gracias por responderme
Tenes razón en lo que decis, pero el ejemplo que me das ya lo habia intentado y me resultaba esto:

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING



por lo que ni siquiera consideré ponerlo acá.

A parte, como dije, hice una prueba para ver que tenia la variable(antes del query) y me daba negativo:

Código PHP :

if($_POST['categoria'] =='producto'){ 
echo 'ok'; 
}else{ 
echo 'shit'; 
}


Siendo que la variable debería tener algo, porque el titulo lo muestro a través de ella.
Creo yo que el problema viene del "$_POST" pero como soy relativamente nuevo en php, puede que me equivoque.

Gracias otra vez y a ver si resolvemos esto jeje
Saludos

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

chrome
Citar            
MensajeEscrito el 06 Ago 2011 10:57 pm
Pues si tu sospecha es esa, entonces muestra el contenido de $_POST:

Código PHP :

echo "<pre>";
var_dump($_POST);
echo "</pre>";

y sal de dudas.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 07 Ago 2011 01:07 am
a ver..
esto me da:

Código :

array(1) {
  ["categoria"]=>
  string(9) "
producto"
}

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

chrome
Citar            
MensajeEscrito el 07 Ago 2011 04:28 am
Un retorno de carro seguido por la cadena "producto".

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 07 Ago 2011 02:08 pm
No se a que ibas con eso.. pero sigo con el problema.
A ver si alguien puede echarme una manito.
gracias, saludos

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

chrome
Citar            
MensajeEscrito el 07 Ago 2011 10:08 pm

ironeric23 escribió:

No se a que ibas con eso.. pero sigo con el problema.
A ver si alguien puede echarme una manito.
gracias, saludos

a lo que DriverOp se refiere es que tienes caracteres del tipo \r \n.,
\r = retorno de carro
\n = salto de linea

en windows cuando pulsas la tecla ENTER lo que hace es agregar estos 2 caracteres juntos

Código :

"
producto"

el cual causa un error en la CONSULTA SQL q tienes ya que esos caracteres no estan permitios almenos que los escapes.
hay funciones de php que eliminan espacios antes y despues como el trim

Código PHP :

$consulta2 = "SELECT subcategoria FROM subcategorias WHERE categoria = '".trim($categ)."'"; 

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 09 Ago 2011 08:39 pm
Perfecto!
Ya había intentado sacar el espacio, pero de forma errónea.
Terminé pensando que no era, pero al final si.
Gracias a los dos.
PD: Sigo sin entender en que momento se produce el espacio ( digo para la próxima que vuelva a ocurrir).
Otra vez gracias, geniales

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

chrome
Citar            
MensajeEscrito el 10 Ago 2011 07:37 pm
loco.... cuando sepa cual es tu sitio te cagare... claro si no haces caso...
Escapa los caracteres en mysl, recuerda que le estas pasando datos DESDE EL USUARIO a la base de datos.
una inyección SQL no viene mal...
usa:
mysql_real_escape_string ( $string )

Por This-is-Purgatory

40 de clabLevel



Genero:Masculino  

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.