elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [Ayuda] SQL syntax error
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Ayuda] SQL syntax error  (Leído 1,962 veces)
K4sS-

Desconectado Desconectado

Mensajes: 19



Ver Perfil
[Ayuda] SQL syntax error
« en: 25 Agosto 2012, 18:15 pm »

Hola, he creado una función y a la hora de llamarla me salta el siguiente error:

Código:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

La función es esta:

Código:
function mostrartallasdisponibles($identificador)
{

global $database_conexionzapatos, $conexionzapatos;
mysql_select_db($database_conexionzapatos, $conexionzapatos);
$query_ConsultaFuncion = sprintf("SELECT tbltallas.idTalla, tbltallas.strNombre, tbltallas.intAumento FROM tblproductotalla Inner Join tbltallas ON tblproductotalla.relTalla = tbltallas.idTalla WHERE tblproductotalla.relProducto =  %s", $identificador);
$ConsultaFuncion = mysql_query($query_ConsultaFuncion, $conexionzapatos) or die(mysql_error());
$row_ConsultaFuncion = mysql_fetch_assoc($ConsultaFuncion);
$totalRows_ConsultaFuncion = mysql_num_rows($ConsultaFuncion);
?>
    <?php
if ($totalRows_ConsultaFuncion > 0) {
?>
    Tallas:<select name="FTalla">
    <?php
do {
?>
<option value="<?php echo $row_ConsultaFuncion['strNombre']?>"><?php echo $row_ConsultaFuncion['strNombre']?></option>
<?php
} while ($row_ConsultaFuncion = mysql_fetch_assoc($ConsultaFuncion));
?>
        </select>
        <?php
}
else
{
echo "No hay tallas disponibles";
}

mysql_free_result($ConsultaFuncion);
}

¿Qué se os ocurre?

Muchas gracias


En línea

alexander1712

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: [Ayuda] SQL syntax error
« Respuesta #1 en: 26 Agosto 2012, 00:47 am »

que tienes bastante desorden en ese código.

en primer lugar deberías identar para que se entienda.

en segundo, usar variables globales es una aberración, ni siquiera clases deberían globalizar porque para eso existe injección de dependencias.

Código:
$query_ConsultaFuncion = sprintf("SELECT tbltallas.idTalla, tbltallas.strNombre, tbltallas.intAumento FROM tblproductotalla Inner Join tbltallas ON tblproductotalla.relTalla = tbltallas.idTalla WHERE tblproductotalla.relProducto =  %s", $identificador);

revisa si la variable identificador contiene algún valor.

también te voy a criticar, aunque no me guste, varias cosas de esa parte, para que mejores:

no entiendo por que usas sprintf, quizá sea por algo que ignoro, pero según lo que entiendo de php.net -> sprintf

está de más, gastas recursos en una función y ensima parseando el contenido.

debería ser así:

Código:
$query_ConsultaFuncion = 'SELECT tbltallas.idTalla, tbltallas.strNombre, tbltallas.intAumento FROM tblproductotalla Inner Join tbltallas ON tblproductotalla.relTalla = tbltallas.idTalla WHERE tblproductotalla.relProducto =  '.$identificador;

otra cosa es que no filtras la variable, por ejemplo podrías usar mysql_real_escape_string

Código:
$query_ConsultaFuncion = 'SELECT tbltallas.idTalla, tbltallas.strNombre, tbltallas.intAumento FROM tblproductotalla Inner Join tbltallas ON tblproductotalla.relTalla = tbltallas.idTalla WHERE tblproductotalla.relProducto =  '.mysql_real_escape_string($identificador);

y por último, si eso es string como muestras en el ejemplo con %s, deberías escapar el texto así:

Código:
$query_ConsultaFuncion = 'SELECT tbltallas.idTalla, tbltallas.strNombre, tbltallas.intAumento FROM tblproductotalla Inner Join tbltallas ON tblproductotalla.relTalla = tbltallas.idTalla WHERE tblproductotalla.relProducto = \' '.mysql_real_escape_string($identificador).'\'';

además, si tu proyecto es grande, no te recomiendo utilizar diseño con php mezclado, te recomiendo basarte en MVC y tener el código ordenado.

Código:
echo "No hay tallas disponibles";

siendo texto literal deberías ponerlo con apostrofos

Código:
echo 'No hay tallas disponibles';

consume el doble sin necesidad.

te recomiendo usar lo menos posible comillas.

te paso mi proyecto, quizá puedas utilizar alguna función para tu proyecto, no me molesta ^^

http://foro.elhacker.net/php/iblog_cms_en_poo_mvc-t369533.0.html

una ultima recomendación, utiliza nombres cortos, no tan largos, porque sino es mucho código para pocas cosas.



fuera de éso que en realidad no es obligatorio solo una sugerencia para futuros códigos, tu problema sin más alarde APARENTEMENTE parece que el $identificador no tiene ningún valor.

saludos!


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
VSFILTER syntax error ????
Multimedia
genree 5 8,232 Último mensaje 4 Agosto 2010, 15:21 pm
por amarch
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in ........
PHP
pacorico69 8 12,309 Último mensaje 27 Marzo 2010, 04:30 am
por KrossPock
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in
PHP
pacorico69 7 6,368 Último mensaje 17 Abril 2010, 05:05 am
por Shell Root
SQL Express 2005 syntax error... AYUDA! « 1 2 »
Bases de Datos
TwisteD420 10 7,891 Último mensaje 15 Junio 2011, 03:41 am
por TwisteD420
error A2009: syntax error in expression
ASM
.:UND3R:. 3 4,185 Último mensaje 31 Agosto 2012, 16:08 pm
por _Enko
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines