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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не сложный вопрос по MySQL

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: должно быть простой вопрос по практике применения MySQL.
Роман Андреев
Отправлено: 27 Сентября, 2011 - 15:44:44
Post Id



Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Здравствуйте! Будте добры, исправте красной ручкой ошибку))) Вот, значит, форма:

<form method='post' action='newtabl.php'>
Новая таблица
<center><input type='text' size=120px name='newtable'>
<input type='submit' value='ДОБАВИТЬ ТАБЛИЦУ'>

Вот, значит, файл-обработчик 'newtabl.php':

$dbName = "base";

mysql_connect(
"localhost","root","") OR DIE("Не могу создать соединение ");
mysql_select_db($dbName) or die(mysql_error());

mysql_query('CREATE TABLE $newtable (
`name` varchar(64000) NOT NULL,
`id` int(255) NOT NULL AUTO_INCREMENT,
`com` varchar(1000) NOT NULL,
`del` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
)')
or die(mysql_error());

Все. По идее, я должен набрать в форме название таблицы, нажать на кнопку "Добавить таблицу" и таблица с набранным именем должна создаться в базе 'base'. Вместо этого скрипт выполняется лишь раз, создав таблицу с именем " $newtable ". Блин, но я ведь в эту переменную по идее текст засовываю, и именно он, как я думал, должен стать миенем новой таблицы. Но на самом деле все не так. Почему???
Спасибо)


-----
я об этом не думал, пока не подумал
 
 Top
MrBeard
Отправлено: 27 Сентября, 2011 - 15:47:20
Post Id



Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Авг. 2011  


Помог: 2 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. mysql_query('CREATE TABLE $_POST["newtable"] (
  2. `name` varchar(64000) NOT NULL,
  3. `id` int(255) NOT NULL AUTO_INCREMENT,
  4. `com` varchar(1000) NOT NULL,
  5. `del` varchar(100) NOT NULL,
  6. PRIMARY KEY (`id`)
  7. )')

(Добавление)
register_globals по умолчанию отключён сейчас везде
 
 Top
Мелкий Супермодератор
Отправлено: 27 Сентября, 2011 - 15:49:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Роман Андреев, MrBeard, внимательно читать обоим: http://php.su/learnphp/datatypes/?string


-----
PostgreSQL DBA
 
 Top
MrBeard
Отправлено: 27 Сентября, 2011 - 15:50:14
Post Id



Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Авг. 2011  


Помог: 2 раз(а)




http://www.php.net/manual/ru/lan...les.external.php
(Добавление)
а, чёрт, не заметил, что кавычки одинарные)
 
 Top
Роман Андреев
Отправлено: 27 Сентября, 2011 - 16:59:52
Post Id



Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Прочитал я руководство по задаванию вопросов. Не получится так вопросы задавать, как автор рекомендует. В поисковиках много теории, это да (если б вы знали, сколько я убил времени на поисковики). Но новички обычно ломают зубы о практику: какая-нибудь запятая не так стоит, ковычки вместо "бэктиков" и т.п. То, что опытному кажется само собой разумеющимся, новичка может стопорнуть надолго. Поэтому самый верный способ - привести конкретный код и попросить, что б тыкнули носом - где косяк, а не формулировать "общую проблему". А на "общие проблемы", да , действительно, много информации и в поисковике и в мануале...
(Добавление)
MrBeard пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. mysql_query('CREATE TABLE $_POST["newtable"] (
  2. `name` varchar(64000) NOT NULL,
  3. `id` int(255) NOT NULL AUTO_INCREMENT,
  4. `com` varchar(1000) NOT NULL,
  5. `del` varchar(100) NOT NULL,
  6. PRIMARY KEY (`id`)
  7. )')

(Добавление)
register_globals по умолчанию отключён сейчас везде


Синтаксис эррор (от Эс Ку Эля)
Уж как я только не пробовал: и с кавычками, и без, и с одинарными, и с двойными...(
Но за концепцию Пасиб)

(Отредактировано автором: 27 Сентября, 2011 - 17:04:33)



-----
я об этом не думал, пока не подумал
 
 Top
LIME
Отправлено: 27 Сентября, 2011 - 17:53:07
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Роман Андреев судя по последнему коду проблема не решена?
исправляю красной ручкой навсякий ))
PHP:
скопировать код в буфер обмена
  1. mysql_query("CREATE TABLE {$_POST["newtable"]} (
  2. `name` varchar(64000) NOT NULL,
  3. `id` int(255) NOT NULL AUTO_INCREMENT,
  4. `com` varchar(1000) NOT NULL,
  5. `del` varchar(100) NOT NULL,
  6. PRIMARY KEY (`id`)
  7. )")

нет не получается тут красной))
смотрите так

(Отредактировано автором: 27 Сентября, 2011 - 17:59:24)

 
 Top
Мелкий Супермодератор
Отправлено: 27 Сентября, 2011 - 17:58:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




LIME, и получаешь fatal error.

PHP:
скопировать код в буфер обмена
  1. mysql_query('CREATE TABLE '.mysql_real_escape_string($_POST["newtable"]).' (
  2. `name` varchar(64000) NOT NULL,
  3. `id` int(255) NOT NULL AUTO_INCREMENT,
  4. `com` varchar(1000) NOT NULL,
  5. `del` varchar(100) NOT NULL,
  6. PRIMARY KEY (`id`)
  7. )');


-----
PostgreSQL DBA
 
 Top
LIME
Отправлено: 27 Сентября, 2011 - 18:00:42
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Мелкий не знаю какую ты редакцию видел но я тут их дофига настряпал пытался символ в коде цветом выделить ))
 
 Top
Мелкий Супермодератор
Отправлено: 27 Сентября, 2011 - 18:04:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




LIME, да, какую-то из более ранних с
PHP:
скопировать код в буфер обмена
  1. "CREATE TABLE $_POST["newtable"]} (
да
PHP:
скопировать код в буфер обмена
  1. "CREATE TABLE $_POST[\"newtable\"]} (


-----
PostgreSQL DBA
 
 Top
Роман Андреев
Отправлено: 27 Сентября, 2011 - 18:10:15
Post Id



Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Мужики, СПАСИБО!!!!!!!!!!!!!!! Я бы сам в жизни не догадался использовать mysql_real_escape_string.
Благодарю вас, за ваш альтруизм. Когда я стану продвинутым кодером - я тоже буду чайникам помогать)))))


-----
я об этом не думал, пока не подумал
 
 Top
LIME
Отправлено: 27 Сентября, 2011 - 18:15:01
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Роман Андреев обрабатывать ввод конечно правильно
и так и надо
но
проблема у вас была в другом
в одинарных кавычках не интерпретируются переменные
вот и не менялось название ))
 
 Top
Роман Андреев
Отправлено: 27 Сентября, 2011 - 18:20:16
Post Id



Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Я ж говорю: я с кавычками уже намучился - и так их ставил, и эдак, и убирал вообще, и двойные, и одинарные... Но о том, что их можно "экранировать", да еще и разными способами - узнал только теперь)

(Отредактировано автором: 27 Сентября, 2011 - 18:21:17)



-----
я об этом не думал, пока не подумал
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB