El error PHP: You have an error in your SQL syntax

Con diferencia, este es de los errores más comunes que nos encontraremos a lo largo de toda nuestra vida de desarrollo Web. Por suerte, suele ser muy fácil de detectar y de resolver, y va a hacer que comprendamos mejor nuestro código, así como las interacciones entre nuestra Web y la base de datos.

1 Etapa de filtro de detección:

  • Nunca poner acentos, espacios o eñes en los nombres de los campos de las bases de datos
  • Los nombres de las tablas, la misma norma anterior, y siempre en minúsculas.
  • Asegurarnos de que si estamos utilizando sesiones, la misma sigue viva (por defecto, si estamos viendo una página sin cambiar de la misma durante un periodo de unos 20 minutos, la sesión se destruye sola, con lo que la variable de sesión que almacena por ejemplo el ID de usuario, pasa a tener valor nulo.

2 etapa de filtro de detección:

En ocasiones nos sale el error y nos obcecamos en la consulta concreta de esa página, cuando no es la que está fallando. Debemos mirar el código fuente de la página que da el error en el navegador para ver exactamente cuando se para el código con el error. Ahí tendremos exactamente el lugar de nuestra programación donde la consulta está fallando, puede ser en una consulta de la página, o bien en una consulta de una función que tengamos en funciones.php, o incluso en otro archivo de inclusión.

Lo más práctico es hacer un “echo” de la variable donde almacenamos la consulta que luego se dispara, esto suele ser entre:

$query_ConsultaFuncion = “SELECT COUNT(idPublicidad) AS Total FROM tblpublicidad WHERE ……..;
$ConsultaFuncion = mysql_query($query_ConsultaFuncion, $ab) or die(mysql_error());

Es decir, entre estas dos lineas, pondremos el echo, de esta forma (el nombre de la variable puede cambiar según la hayáis llanado, claro…

echo $query_ConsultaFuncion;

Con lo que nos quedaría algo así:

$query_ConsultaFuncion = “SELECT COUNT(idPublicidad) AS Total FROM tblpublicidad WHERE ……..;
echo $query_ConsultaFuncion;
$ConsultaFuncion = mysql_query($query_ConsultaFuncion, $ab) or die(mysql_error());

Una vez puesto este echo (sería un sistema de traza sencillo), reejecutamos o actualizamos la página del fallo y veremos como sale la consulta que presumiblemente nos está fallando. Si esta consulta está correcta, deberemos seguir en el archivo de funciones.php para hacer la misma operación en todas las consultas que ejecutemos en esa página. Es decir, seguimos secuencialmente nuestra programación para saber en qué momento se está produciendo otra consulta y lo atacaremos con otro echo.

Una vez hayamos resuelto el por qué la consulta falla y lo tengamos solucionado, simplemente eliminaremos la linea del echo o la comentaremos. Los fallos más comunes de este tipo de error es por una mala construcción de la consulta, falta de parámetros, parámetros vacíos, etc… Si no tenemos un dominio muy avanzado de cómo se estructuran las consultas SQL básicas podéis consultar este sencillo manual.

Espero que os sirva de ayuda. Saludos!.

Obtenemos el certificado de Adwords

Tras mucho estudiar y comparar respuestas, hemos superado al menos dos de los tres exámenes que hacen falta para que Google te otorgue la Certificación en Adwords.

Los exámenes no son fáciles, requieren bastante estudio, y sobre todo mucha práctica con el complejo sistema de publicidad y las infinitas opciones que ofrece, pero planificando el estudio, guardando las preguntas para luego estudiarlas y encontrando la información en la inmensidad de las más de 300 páginas de documentación, lo hemos conseguido.

Sabéis que podéis realizar estos exámenes de forma gratuita, solo tenéis que ser partners de Google (https://www.google.com/partners/), estudiar, practicar y obtendréis la certificación que podéis hacer valer en vuestra Web o currículum.

Hay unas 2 horas para cada exámen, en el que piden un 8,5, un 8 y un 7 como mínimo. Podéis ver la documentación de google mientras lo hacéis, pero si tenéis que buscar cada pregunta, os aseguro que no os va a dar tiempo… son cerca de 100 preguntas por exámen. Para aquellos que quieran meterse en el ajo, mucha suerte!.

Cap 3: Web hackeada o con virus. Dentro del Millon

Presentamos el capítulo 3 del proyecto dentro del millón:

En este video explicamos los motivos por los que tu Web ha podido ser hackeada y como resolverlo. Contraseñas débiles, código poco seguro y por qué es bueno que te hayan atacado.

La Web donde se publicarán todos los videos de este proyecto y cómo participar de los mismos está en:

http://www.dreamweaver-tutoriales.com/proyecto-dentro-del-millon.php

 

Conectándonos con Dreamweaver, MySQL, o MySQLi o PDO

La forma standard de conectarse por parte de DW a una Base de datos, tal y como viene en sus asistentes, viene siendo utilizando el standard del mismo, la extensión MySQL de PHP. Sin embargo, esta extensión ya es antiquísima, esto es, ha sido ultrajada y violada por todas partes con multitud de scripts, y técnicas como SQL Injection, etc…

Con el fin de mejorar la forma de conexión, los chicos de PHP han traído ya hace un tiempo las dos formas de conectarse que indicamos en el título de este post (MySQL Improved y PHP Data Object).

Estas formas de conectar, a fecha de hoy todavía no implementadas en Dreamweaver, son el futuro próximo de las conexiones de la gran mayoría de Webs que vemos, usamos, o hacemos. Son mucho más seguras, evitan inyecciones SQL por definición y están optimizadas para los servidores de este siglo.

Si todo es tan bonito… ¿por qué no migrar ya directamente a esas conexiones?… muchos de vosotros habréis recibido alguna vez el mensaje del tipo “The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead”… en pocas palabras, “Cambia ya de forma de conectarte que en cuestión de unas cuantas versiones de PHP vamos a quitar la extensión y te vas a ver con el culo al aire”.

Si, cierto, pero no inmediato, primero, porque muchos servidores todavía no soportan este tipo de superconexiones, porque a pesar de que albergan una versión moderna de PHP, no ejecutan una versión actualizada de MySQL, lo que provoca errores de conexión, así como comportamientos erráticos en los datos obtenidos. el otro motivo, es que hay que modificar parte del código de nuestra conexión para que funcione correctamente.

Contra lo que pueda parecer, el trauma es menor de lo que se pueda uno imaginar, hay muchas Webs que explican como actualizar tus conexiones y querys para pasarlas a los nuevos sistemas, y solo debemos contrastar con nuestro hosting si soportan ese tipo de conexión. Una vez hecho esto, y dedicándole una cantidad de tiempo razonable, ya tenemos nuestra Web actualizadísima en lo que se refiere a conexión a la Base de Datos.

Por lo pronto, aquellos que no quieran realizar la migración todavía, ya que hay técnicas para evitar SQL Injection, como se explica en los tutoriales, o bien porque de momento funciona bien o su servidor no lo soporte, no hay problema, bajo mi punto de vista queda conexión standard para rato, y cuando digo rato, digo años… centenares de miles de Webs funcionan y funcionarán con el sistema standard durante muchísimos años, asi que “haya calma”.

Para eliminar el aviso de que la función está rendida al olvido, o bien “deprecated”, podemos utilizar esta instrucción en la primera línea de nuestro archivo de conexiones (Connections/conexiones.php) por ejemplo:

error_reporting(E_ALL ^ E_DEPRECATED);

Con esto seguiremos mostrando los errores, notificaciones y warnings de nuestro código PHP, pero evitaremos mostrar el dichoso deprecated, mientras poco a poco nos da tiempo a actualizar nuestras Webs, o bien vamos creando las nuevas con los nuevos métodos de conexión.

Espero que esta info. os haya sido útil.

Cap 2: Linkbuilding o conseguir enlaces entrantes. Dentro del Millón

En este video explicamos 11 ideas que pueden ser útiles para conseguir enlaces de otras páginas Webs, se trata del linkbuilding. Segundo video del proyecto “Dentro del millón” de AyZWeb.

La Web donde se publicarán todos los videos de este proyecto y cómo participar de los mismos está en:

http://www.dreamweaver-tutoriales.com/proyecto-dentro-del-millon.php

Espero vuestros comentarios. Saludos y gracias

Descubriendo grandes oradores

Fue hace tan solo un par de semanas cuando navegando entre los correos de publicidad de empresas de SEO me encontré con una entrevista a Laura Ribas. Tuve la ocasión de entrar a su página http://www.lauraribas.com y ver que tenia un gran canal con consejos, cursos y asesoría acerca de un montón de temas referentes al mundo empresarial y autónomo desde un punto de vista directo, simple y entendible.

A fecha de hoy aún no he visto todos los vídeos que ofrece en su canal, pero por lo que he visto, no podía menos que recomendaros que le echéis un vistazo, creo que realmente merece la pena. Muy a valorar su forma sencilla y directa de expresarse, estoy seguro que cogeréis más de una buena idea de sus opiniones y ponencias.

Saludos