Ver Mensaje Individual
  #8 (permalink)  
Antiguo 27/10/2013, 05:37
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Sobreescribir llave única

Bien, por un lado no estás entendiendo a qué nos referimos cuando en Bases de DAtos hablamos de hacer comprobaciones previas.
Una comprobación previa no implica que leas toda la tabla y luego verifiques contra lo obtenido programáticamente. Nadie hace semejante cosa.
Lo que debes hacer es consultar por la existencia de registros que cumplan con la clave primaria:
Código MySQL:
Ver original
  1. SELECT COUNT(*) existe
  2. FROM visitas
  3. WHERE fecha = '2013-10-24';
Con eso alcanza. Si devuelve algo diferente de cero, haces un UPDATE, y si devuelve cero un INSERT.
Tan sencillo como eso.

Respecto a las fechas,es un tema muy común en los principiantes: Las fechas en la bases de datos deben guardarse siempre como DATE, DATETIME o TIMESTAMP, y jamás como VARCHAR. Nunca. Ni en Sueños, o tendrás pesadillas.
¿Cómo construyes la consulta, entonces? Pues es medio obvio: la creas haciendo que la fecha quede en el formato AAAA-MM-DD, como en mi ejemplo. Para eso cada lenguaje tiene sus propias funciones de formato de fechas y horas... PHP no es la excepción.
USA esas funciones.
Por su lado, MySQL puede devolverte una fecha en cualquier formato, ya que también tiene a su vez funciones de salida que lo pueden hacer. Pero no es buena idea usarlas en los WHERE, y convertir una fecha a cadena "DD/MM/AAAA" en el WHERE puede darte resultados erróneos en las consultas. No lo hagas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)