Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

ayuda con crear tabla desde php

Estas en el tema de ayuda con crear tabla desde php en el foro de Mysql en Foros del Web. wenas a todos necesito vuestra ayuda -.-, tengo un scritp que se instala con un php pero esta todo bien pero cuando llega a esto ...
  #1 (permalink)  
Antiguo 23/11/2008, 05:10
 
Fecha de Ingreso: abril-2007
Mensajes: 36
Antigüedad: 17 años
Puntos: 0
ayuda con crear tabla desde php

wenas a todos necesito vuestra ayuda -.-, tengo un scritp que se instala con un php pero esta todo bien pero cuando llega a esto me da error al crear.

aki el error:

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 'release varchar(10) NOT NULL default '' )' at line 1


y aki los datos:

Cita:
mysql_query("CREATE TABLE $redir_table ( host varchar(100) NOT NULL default '', name varchar(25) NOT NULL default '', vname varchar(25) NOT NULL default '', passwd varchar(50) NOT NULL default '', email varchar(100) NOT NULL default '', url varchar(100) NOT NULL default '', title varchar(100) NOT NULL default '', descr text NOT NULL, keyw text NOT NULL, counter int(11) default NULL, robots varchar(50) NOT NULL default '', news char(3) NOT NULL default '', revisit text NOT NULL, time varchar(15) NOT NULL default '', ip varchar(20) NOT NULL default '', cat varchar(50) NOT NULL default '', lasttime varchar(15) NOT NULL default '', stats char(3) NOT NULL default '', mail char(3) NOT NULL default '', adtype varchar(15) NOT NULL default '', acticode varchar(15) NOT NULL default '', active char(3) NOT NULL default '', PRIMARY KEY (host), UNIQUE KEY host (host) )") or die (mysql_error());
mysql_query("CREATE TABLE $options_table ( home varchar(50) NOT NULL default '', sitetitle varchar(150) NOT NULL default '', adminemail varchar(50) NOT NULL default '', username varchar(50) NOT NULL default '', password varchar(50) NOT NULL default '', domainip varchar(15) NOT NULL default '', maindomain varchar(50) NOT NULL default '', mailtoadmin char(3) NOT NULL default '', language varchar(20) NOT NULL default '', multiple char(3) NOT NULL default '', minlength char(2) NOT NULL default '', maxlength char(2) NOT NULL default '', reserved text NOT NULL, forbidden text NOT NULL, autoappr char(3) NOT NULL default '', theme varchar(50) NOT NULL default '', release varchar(10) NOT NULL default '' )") or die (mysql_error());
mysql_query("CREATE TABLE $domain_table ( domain varchar(50) NOT NULL default '' )") or die (mysql_error());
mysql_query("CREATE TABLE $category_table ( category varchar(50) NOT NULL default '', advtype varchar(20) NOT NULL default '', adurl varchar(150) NOT NULL default '', height varchar(4) NOT NULL default '', width varchar(4) NOT NULL default '' )") or die (mysql_error());
mysql_query("CREATE TABLE $visitor_table ( host varchar(100) NOT NULL default '', date varchar(15) NOT NULL default '', ip varchar(20) NOT NULL default '', agent varchar(250) NOT NULL default '', ref varchar(250) NOT NULL default '', timestamp varchar(15) NOT NULL default '' )") or die (mysql_error());

aver si saven donde esta el error de crear la tabla porque no me deja seguir,muchas gracias de antemano un saludo.
  #2 (permalink)  
Antiguo 23/11/2008, 07:56
Avatar de 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: ayuda con crear tabla desde php

En principio cuatro problemas:
1. Por un lado, no coloques código PHP o de cualquier otro que no sea SQL. Es una regla del foro porque cuando lo haces el SQL se ve "sucio" y no se comprende bien. Además, de esa forma no podemos discriminar qué errores son de sintaxis en el SQL y qué errores provienen del PHP.
2. Usa en los ejemplos valores reales para los puntos donde has puesto variables. De esa forma se volverá evidente si el error es programático o sintáctico.
3. Antes de tratar de saber si el error está en el SQL, primero revisa con cuidado el PHP. Por lo que se alcanza a ver en algunas partes, puede haber errores allí.
4. Finalmente, es muy probable que uno de los problemas que te encuentras es que no estás respetando el uso de las palabras reservadas. Sabes a qué me refiero: un lenguaje (no importa cual) no te permite poner como nombres de variables palabras que sean sentencias o funciones del propio lenguaje porque no puede diferenciar entre variable y sentencia. Mira esto:
Cita:
CREATE TABLE visitor_table (
host varchar(100) NOT NULL default '',
date varchar(15) NOT NULL default '',
ip varchar(20) NOT NULL default '',
agent varchar(250) NOT NULL default '',
ref varchar(250) NOT NULL default '',
timestamp varchar(15) NOT NULL default '' );
Esas dos resaltadas son palabras reservadas... Además, ¿para qué defines un campo como VARCHAR si vas a guardar algo que ya tiene su propio tipo de dato?

Consulta bien este capítulo: 9.6. Tratamiento de palabras reservadas en MySQL
y te sugiero profundizar un poco en la sintaxis del SQL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 24/11/2008, 06:36
 
Fecha de Ingreso: abril-2007
Mensajes: 36
Antigüedad: 17 años
Puntos: 0
Respuesta: ayuda con crear tabla desde php

muchas gracias gnzsoloyo por responder no lo savia, es que yo no puedo cambiar esos datos por que el script me lo pide te pongo entonces todo el codigo php para aver si ahora es mejor. yo creo que esta todo bien en el codigo php solo es la sql que dice que hay un error sql osea mal escrito pero nose donde.

no coje todo el codigo t lo subi a un servidor a ver si me lo puedes mirar porfavor.

ultrashare.net/hosting/fl/1d48c4d4b5/setup

un saludo y muchas gracias
  #4 (permalink)  
Antiguo 24/11/2008, 08:09
Avatar de 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: ayuda con crear tabla desde php

Revisé tus tablas, desglosando cada una de ellas en su código SQL y luego las probé.
Para que funcionen deben ir escritas así:
Código sql:
Ver original
  1. CREATE TABLE   `redir_table` (
  2.   `host` VARCHAR(100) NOT NULL DEFAULT '',
  3.   `name` VARCHAR(25) NOT NULL DEFAULT '',
  4.   `vname` VARCHAR(25) NOT NULL DEFAULT '',
  5.   `passwd` VARCHAR(50) NOT NULL DEFAULT '',
  6.   `email` VARCHAR(100) NOT NULL DEFAULT '',
  7.   `url` VARCHAR(100) NOT NULL DEFAULT '',
  8.   `title` VARCHAR(100) NOT NULL DEFAULT '',
  9.   `descr` text NOT NULL,
  10.   `keyw` text NOT NULL,
  11.   `counter` INT(11) DEFAULT NULL,
  12.   `robots` VARCHAR(50) NOT NULL DEFAULT '',
  13.   `news` CHAR(3) NOT NULL DEFAULT '',
  14.   `revisit` text NOT NULL,
  15.   `time` VARCHAR(15) NOT NULL DEFAULT '',  -- Palabra reservada. Es un tipo de dato.
  16.   `ip` VARCHAR(20) NOT NULL DEFAULT '',
  17.   `cat` VARCHAR(50) NOT NULL DEFAULT '',
  18.   `lasttime` VARCHAR(15) NOT NULL DEFAULT '',
  19.   `stats` CHAR(3) NOT NULL DEFAULT '',
  20.   `mail` CHAR(3) NOT NULL DEFAULT '',
  21.   `adtype` VARCHAR(15) NOT NULL DEFAULT '',
  22.   `acticode` VARCHAR(15) NOT NULL DEFAULT '',
  23.   `active` CHAR(3) NOT NULL DEFAULT '',
  24.   PRIMARY KEY  (`host`),
  25.   UNIQUE KEY `host` (`host`)
  26. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  27.  
  28. CREATE TABLE   `visitor_table` (
  29.   `host` VARCHAR(100) NOT NULL DEFAULT '',
  30.   `date` VARCHAR(15) NOT NULL DEFAULT '',  -- Palabra reservada. Es un tipo de dato.
  31.   `ip` VARCHAR(20) NOT NULL DEFAULT '',
  32.   `agent` VARCHAR(250) NOT NULL DEFAULT '',
  33.   `ref` VARCHAR(250) NOT NULL DEFAULT '',
  34.   `timestamp` VARCHAR(15) NOT NULL DEFAULT ''  -- Palabra reservada. Es un tipo de dato.
  35. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  36.  
  37. CREATE TABLE   `options_table` (
  38.   `home` VARCHAR(50) NOT NULL DEFAULT '',
  39.   `sitetitle` VARCHAR(150) NOT NULL DEFAULT '',
  40.   `adminemail` VARCHAR(50) NOT NULL DEFAULT '',
  41.   `username` VARCHAR(50) NOT NULL DEFAULT '',
  42.   `password` VARCHAR(50) NOT NULL DEFAULT '',  -- Palabra reservada. Es una función.
  43.   `domainip` VARCHAR(15) NOT NULL DEFAULT '',
  44.   `maindomain` VARCHAR(50) NOT NULL DEFAULT '',
  45.   `mailtoadmin` CHAR(3) NOT NULL DEFAULT '',
  46.   `language` VARCHAR(20) NOT NULL DEFAULT '',  -- Palabra reservada. Es una función.
  47.   `multiple` CHAR(3) NOT NULL DEFAULT '',
  48.   `minlength` CHAR(2) NOT NULL DEFAULT '',
  49.   `maxlength` CHAR(2) NOT NULL DEFAULT '',
  50.   `reserved` text NOT NULL,
  51.   `forbidden` text NOT NULL,
  52.   `autoappr` CHAR(3) NOT NULL DEFAULT '',
  53.   `theme` VARCHAR(50) NOT NULL DEFAULT '',
  54.   `release` VARCHAR(10) NOT NULL DEFAULT '' -- Palabra reservada. Es una función.
  55. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  56.  
  57. CREATE TABLE   `domain_table` (
  58.   `domain` VARCHAR(50) NOT NULL DEFAULT ''
  59. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  60.  
  61. CREATE TABLE   `category_table` (
  62.   `category` VARCHAR(50) NOT NULL DEFAULT '',
  63.   `advtype` VARCHAR(20) NOT NULL DEFAULT '',
  64.   `adurl` VARCHAR(150) NOT NULL DEFAULT '',
  65.   `height` VARCHAR(4) NOT NULL DEFAULT '',
  66.   `width` VARCHAR(4) NOT NULL DEFAULT ''
  67. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

El problema está dado en las líneas que están resaltadas. Allí estás usando palabras reservadas. La única posibilidad de mantenerlas es poner todos los nombres entre acentos graves. De esa forma te las dejará usar, pero debes recordar que también en las consultas los nombres de los campos deben ir entre estos acentos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:08.