Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ошибка при создании таблицы
 
 автор: EI   (08.07.2009 в 23:32)   письмо автору
 
 

При запуске

CREATE TABLE articles (
  id_article INT NOT NULL AUTO_INCREMENT,
  name TINYTEXT NOT NULL,
  description TINYTEXT NOT NULL,
  html_title TINYTEXT NOT NULL,
  html_keywords TINYTEXT NOT NULL,
  pos MEDIUMINT NOT NULL,
  hide ENUM('show','hide') DEFAULT 'show',  
  id_page MEDIUMINT NOT NULL,
  PRIMARY KEY (id_article),
  KEY id_page (id_page)
  ) TYPE=MyISAM;


( листинг 7.2, стр. 268, "PHP 5 Практика создания web-сайтов" 2006 г.)

получаю ошибку:

Parse error: syntax error, unexpected T_STRING in ...table_articles2.php on line 11

----> hide ENUM('show','hide') DEFAULT 'show',

Почему?

phpMyAdmin тоже ругается на 'show': #1067 - Invalid default value for 'hide'

Кстати, в phpMyAdmin написано:
"Для значений по умолчанию просто введите единственное значение без экранирования и квотирования, используя этот формат: a"

  Ответить  
 
 автор: Trianon   (09.07.2009 в 00:13)   письмо автору
 
   для: EI   (08.07.2009 в 23:32)
 

Листинг на 268 странице показывает SQL-код.
А ошибка у Вас явно уровня php
До SQL дело не доходит.

А всё потому, что строки в php пишутся по определенным правилам.

Собственно в любом языке текст, содержащий кавычки, не обрамляется в те же кавычки совсем уж без изменений. Иначе обрамляющие кавычки невозможно отличить от тех, что составляют текст.

Во вкладке SQL клиента phpMyAdmin этот запрос вполне проходит как есть.
Создание же таблиц мастером из того же phpMyAdmin требует следования указаниям, которые Вы процитировали.

  Ответить  
 
 автор: EI   (09.07.2009 в 00:30)   письмо автору
 
   для: Trianon   (09.07.2009 в 00:13)
 

Спасибо за ответ.

Вот полный код, включая PHP:

<?php 

include_once  "connect.php";

mysql_query('
CREATE TABLE articles (
  id_article INT NOT NULL AUTO_INCREMENT,
  name TINYTEXT NOT NULL,
  description TINYTEXT NOT NULL,
  html_title TINYTEXT NOT NULL,
  html_keywords TINYTEXT NOT NULL,
  pos MEDIUMINT NOT NULL,
  hide ENUM('
show','hide') DEFAULT 'show',
  id_page MEDIUMINT NOT NULL,
  PRIMARY KEY (id_article),
  KEY id_page (id_page)
  ) TYPE=MyISAM;
'
);

?>



При удалении строки

hide ENUM('show','hide') DEFAULT 'show',


ощибка не выдается и таблица успешно создается.

  Ответить  
 
 автор: Trianon   (09.07.2009 в 00:45)   письмо автору
 
   для: EI   (09.07.2009 в 00:30)
 

Что ж...

  Ответить  
 
 автор: GeorgeIV   (09.07.2009 в 11:34)   письмо автору
 
   для: EI   (09.07.2009 в 00:30)
 

А всё потому, что строки в php пишутся по определенным правилам.

Собственно в любом языке текст, содержащий кавычки, не обрамляется в те же кавычки
 совсем уж без изменений. Иначе обрамляющие кавычки невозможно отличить от тех, что
 составляют текст.


Еще раз перечитайте ВНИМАТЕЛЬНО этот текст и Ваш код.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования