Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/10/2009, 05:20
Avatar de Distriker
Distriker
 
Fecha de Ingreso: marzo-2008
Ubicación: Las Palmas De Gran Canarias
Mensajes: 924
Antigüedad: 16 años, 1 mes
Puntos: 23
¿Cómo podría hacer que mediante una sentencia SQL se cree una tabla "si no existe"?

Hola a todos, tengo un pequeño problema con la creación de mi sistema, y es que tenía el codigo de Crear la Tabla en el archivo de configuracion.php que siempre es llamado en todos los archivos por lo que siempre sustituye a esa tabla una y otra vez y nunca guarda los registros de users, un gran problema, finalmente tomé la decisión de hacer un install.php aparte, lo que pienso que me solucionaría el problema, pero tengo unos problemillas aun.

¿Cómo podría hacer yo para que el install.php solo cree la tabla si no existe y que si existe te mande un mensaje estilo "La BD de Datos ya ha sido instalado..."?

Lo que yo tengo es esto:

Código php:
Ver original
  1. <?php
  2.  
  3. require ('configuracion.php') ;
  4.  
  5. $query = "CREATE TABLE `users` (
  6. `id` INT (4) NOT NULL AUTO_INCREMENT,
  7. `nick` VARCHAR (30) BINARY NOT NULL,
  8. `contrasena` VARCHAR (30) BINARY NOT NULL,
  9. `email` VARCHAR (100) NOT NULL,
  10. `fecharegistro` INT (15) NOT NULL,
  11. `niveldeusuario` INT (1) NOT NULL,
  12. `descripciondeusuario` LONGTEXT NOT NULL,
  13. INDEX (`id`)
  14. ) ;" ;
  15.  
  16. mysql_query ($query) ;
  17.  
  18. ?>

Navegando por Google me encontré con este post de FDW.

Probé lo que dice Cluster, el poner el CREATE TABLE `users` IF NOT EXISTS pero no me funciona, no me crea la tabla.

Si pusiese esa función, se me quedaría así:

Código PHP:
<?php

require ('configuracion.php') ;

$query "CREATE TABLE `users` IF NOT EXISTS (
`id` INT (4) NOT NULL AUTO_INCREMENT,
`nick` VARCHAR (30) BINARY NOT NULL,
`contrasena` VARCHAR (30) BINARY NOT NULL,
`email` VARCHAR (100) NOT NULL,
`fecharegistro` INT (15) NOT NULL,
`niveldeusuario` INT (1) NOT NULL,
`descripciondeusuario` LONGTEXT NOT NULL,
INDEX (`id`)
) ;" 
;

mysql_query ($query) ;

?>
¿Cómo podría solucionar esto?

Saludos
__________________
Si no te quejas, nunca conseguiras nada, pero si te quejas siempre lo perderás todo.
Una mala acción da fruto a un mal Karma.