Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: ошибка при создании таблиц
Форумы портала PHP.SU » » Вопросы новичков » ошибка при создании таблиц

Страниц (1): [1]
 

1. foozzi - 01 Декабря, 2011 - 21:20:31 - перейти к сообщению
сам код:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. ini_set('display_errors',1);
  3. #### Функция-инсталлятор ####
  4. function install_gnub() {
  5.         include ('../core/config.php');
  6.         $shr = mysql_query('SHOW TABLES');
  7.         for ($tables=array(); $row3=mysql_fetch_array($shr); $tables[$row3[0]]=true); // Сотрим таблицы
  8.         if (!isset($tables[PREFIX.'categories']))  //Если таблиц еще не существует
  9.         {
  10. #### Создаем таблички ####
  11.   mysql_query ('CREATE TABLE '.PREFIX.'admins (
  12.   id tinyint(4) NOT NULL auto_increment,
  13.   login tinytext NOT NULL,
  14.   password tinytext NOT NULL,
  15.   status enum(admin,moderator) default NULL,
  16.   PRIMARY KEY  (`id`)
  17. ) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 AUTO_INCREMENT=8;') or die(mysql_error());
  18.  
  19.  
  20.    mysql_query('CREATE TABLE '.PREFIX.'config (
  21.   site_name text NOT NULL,
  22.   quotes_num tinyint(4) default NULL
  23. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;') or die(mysql_error());
  24.  
  25.    mysql_query('CREATE TABLE '.PREFIX.'logs (
  26.   id tinyint(4) NOT NULL auto_increment,
  27.   qid tinyint(4) NOT NULL,
  28.   ip tinytext NOT NULL,
  29.   rating enum(plus,minus) default NULL,
  30.  PRIMARY KEY  (`id`)
  31. ) ENGINE=MyISAM AUTO_INCREMENT=39 DEFAULT CHARSET=utf8 AUTO_INCREMENT=39;') or die(mysql_error());
  32.  
  33.  
  34.    mysql_query('CREATE TABLE '.PREFIX.'quotes (
  35.   id tinyint(4) NOT NULL auto_increment,
  36.   moderator tinytext NOT NULL,
  37.   date tinytext NOT NULL,
  38.   rating tinyint(4) NOT NULL,
  39.   content text,
  40.   status enum(checked,unchecked) NOT NULL,
  41.  PRIMARY KEY  (`id`)
  42. ) ENGINE=MyISAM AUTO_INCREMENT=19 DEFAULT CHARSET=utf8 AUTO_INCREMENT=19 ;') or die(mysql_error());
  43.  
  44. #### Тут данные админа ####
  45. $name = @$_REQUEST['name'];
  46.                 if ($name == '') $name = $login;
  47.                 mysql_query('INSERT INTO '.PREFIX.'admins SET
  48.                         status = "admin",
  49.                         login = "'.$login.'",
  50.                         name = "'.$name.'",
  51.                         password = "'.md5($pass).'"')  or die(mysql_error());
  52.                        
  53.  
  54. $locale['i9']; // Вывод сообщения об удачной установке :)
  55. }
  56.  
  57. else
  58. {
  59.         $locale['i10']; // Вывод сообщение об не удачной установке :(
  60.         }
  61.  
  62. }  
  63. ?>
  64.  
  65. <?PHP
  66. #### Если кнопка "Поехали" в форме нажата, заполняем массив ####
  67. if (isset($_REQUEST['install']))
  68.         {
  69. #### Заполняем массив настроек тем, что пришло из формы ####
  70.                 $config = array();
  71.      
  72.                 $config['login'] = $_REQUEST['login'];
  73.                 $config['pass'] = $_REQUEST['pass'];
  74.  
  75.                 $config['servdb'] = $_REQUEST['servdb'];
  76.                 $config['userdb'] = $_REQUEST['userdb'];
  77.                 $config['passwd'] = $_REQUEST['passwd'];
  78.                 $config['namedb'] = $_REQUEST['namedb'];
  79.                 $config['PREFIX'] = $_REQUEST['prefix'];
  80.                
  81.                
  82.                 $config_tmpl = file_get_contents('config_tmpl.txt');
  83.                 //обходим в цикле, заменяя части шаблона на элементы конф. массива
  84.                 foreach ($config as $key=>$value) $config_tmpl = str_replace("<%$key%>", $value, $config_tmpl);
  85.                 $cfg = fopen ('../core/config.php', "w");
  86.                 fwrite ($cfg, $config_tmpl);
  87.                 fclose ($cfg);
  88. #### Запуск функции установки ####
  89.                 install_gnub();
  90.         }
  91. ?>
  92.  
  93. <?PHP include_once("../core/locale.php"); ?>
  94. <center>
  95. <form action="./install.php" method="post" >
  96. <? print_r ($locale['i1']); ?><br><input type="text" name="userdb" value="root" /><br>
  97. <? print_r ($locale['i2']); ?><br><input type="text" name="namedb" value="gnub" /><br>
  98. <? print_r ($locale['i3']); ?><br><input type="text" name="passwd" value="passwd" /><br>
  99. <? print_r ($locale['i4']); ?><br><input type="text" name="servdb" value="localhost" /><br>
  100. <? print_r ($locale['i5']); ?><br><input type="text" name="prefix" value="gnub_" /><br>
  101. <? print_r ($locale['i6']); ?><br>
  102. <? print_r ($locale['i7']); ?><br><input type="text" name="login" value="admin" /><br>
  103. <? print_r ($locale['i8']); ?><br><input type="text" name="pass" value="pass" /><br>
  104. <input type="submit" name="install" value="Поехали" /><br>
  105. </form>
  106. </center>
  107.  


собстно с php мне все ясно, а вот со скулью не совсем, когда писал опирался на левый пример, и при создании таблиц выходит ошибка синтаксиса:
CODE (htmlphp):
скопировать код в буфер обмена
  1. 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 'admin,moderator) default NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCRE' at line 5


ткните плиз, только не давно начал скулью заниматся
2. Bio man - 01 Декабря, 2011 - 21:36:41 - перейти к сообщению
foozzi пишет:
('admin','moderator')
строку передавай
то же самое с остальными таблицами
3. foozzi - 01 Декабря, 2011 - 21:47:10 - перейти к сообщению
Спасибо большое, + в репу)
(Добавление)
мм... беда
# Поле Тип Сравнение Атрибуты Null По умолчанию Дополнительно Действие
4 status enum('admin', 'moderator') utf8_general_ci Да NULL Изменить


в "Тип" пишет enum('admin', 'moderator')

код:
PHP:
скопировать код в буфер обмена
  1. mysql_query ('CREATE TABLE '.PREFIX.'admins (
  2.   id tinyint(4) NOT NULL auto_increment,
  3.   login tinytext NOT NULL,
  4.   password tinytext NOT NULL,
  5.   status enum("admin","moderator") default NULL,
  6.   PRIMARY KEY  (`id`)
  7. ) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 AUTO_INCREMENT=8;') or die(mysql_error());


одинарные кавычки нельзя ставить т.к. в начале уже были открыты одинарные кавычки, я заменил двойными для вставки строки...
4. Мелкий - 01 Декабря, 2011 - 21:59:25 - перейти к сообщению
И в чём проблема-то?
5. Panoptik - 01 Декабря, 2011 - 22:02:25 - перейти к сообщению
вообще скул любит когда таблицы и поля обрамляются в апострофы - это на клаве где буковка Ё =) используя их избавляешься от проблем с открытием/закрытием строки обычными одинарными либо двойными кавычками, а вот значения нельзя обрамлять в апострофы, тут уже по-любому прийдется юзать кавычки
6. foozzi - 01 Декабря, 2011 - 22:04:42 - перейти к сообщению
Мелкий сорр неделю в sql , для типа это нормально?
(по литературе sql не дошол до этого)
7. Panoptik - 01 Декабря, 2011 - 22:09:09 - перейти к сообщению
если есть такая острая необходимость использовать определенный тип кавычек - то просто экранируйте их слешом например

PHP:
скопировать код в буфер обмена
  1.  
  2.     mysql_query ('CREATE TABLE '.PREFIX.'admins (
  3.      id tinyint(4) NOT NULL auto_increment,
  4.      login tinytext NOT NULL,
  5.      password tinytext NOT NULL,
  6.      status enum(\'admin\',\'moderator\') default NULL,
  7.      PRIMARY KEY  (`id`)
  8.    ) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 AUTO_INCREMENT=8;') or die(mysql_error());
  9.  
8. Мелкий - 02 Декабря, 2011 - 08:08:21 - перейти к сообщению
foozzi пишет:
Мелкий сорр неделю в sql , для типа это нормально?

Да, это нормально.

 

Powered by ExBB FM 1.0 RC1