Автор Тема: Software error:  (Прочитано 5905 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн SteelRat

  • Funk U!
  • Старожил
  • ****
  • Сообщений: 290
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thewebfactory.fatal.ru
Software error:
« : 15 Мая 2002, 02:15:52 »
Ляпаю первый SQL скрипт и получаю:
###############Browser output###############
Content-type: text/html
Software error:

оЕ ТБВПФБЕФ, ВМЙО: INSERT INTO BAZA_BONCHA VALUES (\'\',SteelRat,SteelRatov,SteelRatovich,11/08/1983,Россия,Санкт-Питербург,Россия,Санкт-Петербург,2000,Э-02,ФЭУ,SteelRat@Mail2K.Ru,[url]http://thewebfactory.fatal.ru,13-666,webm@ster,funkU,Не[/url] впишу. Такая я бука.). рТЙЮЙОБ:  at databaser.cgi line 247.

For help, please send mail to the webmaster (hosting@mns.ru), giving this error message and the time and date of the error.
##########################################
Зюзюки - это мои кои8 die "xxx"
Debian/GNU Linux is rulezz...

Оффлайн SteelRat

  • Funk U!
  • Старожил
  • ****
  • Сообщений: 290
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thewebfactory.fatal.ru
databaser.cgi:
« Ответ #1 : 15 Мая 2002, 02:19:54 »
244 &db_connect;
245 $db_query = qq~INSERT INTO BAZA_BONCHA VALUES (\'\',$PostedData{\'recipient_name\'},$PostedData{\'recipient_familie\'},$PostedData{\'recipient_fathername\'},$PostedData{\'recipient_born_date\'},$PostedData{\'recipient_born_contry\'},$PostedData{\'recipient_born_city\'},$PostedData{\'recipient_now_contry\'},$PostedData{\'recipient_now_city\'},$PostedData{\'recipient_ear_of_arrival\'},$PostedData{\'recipient_group_indeficator\'},$PostedData{\'recipient_facultet_name\'},$PostedData{\'recipient_email\'},$PostedData{\'recipient_site_url\'},$PostedData{\'recipient_phone_number\'},$PostedData{\'recipient_proffession\'},$PostedData{\'recipient_pass\'},$PostedData{\'recipient_comments\'})~;
246 $sth = $dbh->prepare ($db_query) or die "Не приготавляется запрос: $db_query. Причина: $!";
247 $sth->execute or die "Не работает, блин: $db_query. Причина: $!";
248 &db_disconnect;


База вида:

ID INTEGER AUTO_INCREMENT NOT NULL PRIMARY KEY,
R_NAME VARCHAR(36),
R_FAMILIE VARCHAR(36),
R_FATHERNAME VARCHAR(36),
R_BIRTHDAY VARCHAR(10),
R_BIRTHDAY_CONTRY VARCHAR(36),
R_BIRTHDAY_CITY VARCHAR(36),
R_NOW_CONTRY VARCHAR(36),
R_NOW_CITY VARCHAR(36),
R_BEGIN_DATE SMALLINT,
R_GROUP_NUMBER VARCHAR(24),
R_FUCK_NAME VARCHAR(120),
R_EMAIL VARCHAR(60),
R_WWW VARCHAR(60),
R_TELEPHONE VARCHAR(40),
R_PROFESSION VARCHAR(80),
R_PASSWORD VARCHAR(40),
R_COMMENTS VARCHAR(240)
Debian/GNU Linux is rulezz...

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Software error:
« Ответ #2 : 15 Мая 2002, 03:19:01 »
Эээ, а как насчет вывода в die вместе со своими причитаниями содержимого $DBI::errstr ? Было бы информативнее..

+ может стоило бы методом quote() данные обработать перед тем как сувать их в таблицу?
 в исканиях.

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Software error:
« Ответ #3 : 15 Мая 2002, 09:54:02 »
Цитировать
+ может стоило бы методом quote() данные обработать перед тем как сувать их в таблицу?

Или использовать placeholders.
2B OR NOT 2B = FF

Оффлайн SteelRat

  • Funk U!
  • Старожил
  • ****
  • Сообщений: 290
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thewebfactory.fatal.ru
ЭЭЭ.
« Ответ #4 : 15 Мая 2002, 12:30:07 »
Я решил дело взяв переменные $PostedData{\'x\'} в кавычки в #245.
2 Green Kakadu: Сейчас почитал доки и действительно, вышесделоанное аналогично quote(). Только quote() проще.
2Chs: С того момента, как я начил писать скрипты под mySQL не прошло и 24 часа ;-). Я перерыл все свои доки, но так и не нашёл обьяснения "placeholders".
 сейчас пойду копать mysql.ru etc.. Но если вы мне обьясните, что это за фича, то большое вам моё спасибо.
Debian/GNU Linux is rulezz...

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Software error:
« Ответ #5 : 15 Мая 2002, 14:43:21 »
Цитировать
2Chs: С того момента, как я начил писать скрипты под mySQL не прошло и 24 часа ;-). Я перерыл все свои доки, но так и не нашёл обьяснения "placeholders".
сейчас пойду копать mysql.ru etc.. Но если вы мне обьясните, что это за фича, то большое вам моё спасибо.

my $cmd = "select * from table1 where id=?";
my $sth = $dbh->prepare($cmd);
$sth->execute(1);
Вкратце.:)) Подробнее: perldoc DBI;
2B OR NOT 2B = FF

Оффлайн SteelRat

  • Funk U!
  • Старожил
  • ****
  • Сообщений: 290
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thewebfactory.fatal.ru
?
« Ответ #6 : 15 Мая 2002, 16:55:42 »
where id=?" -- Я так понял, что \'?\' и есть тот самый plaseholder?
Debian/GNU Linux is rulezz...

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Software error:
« Ответ #7 : 15 Мая 2002, 18:02:12 »
Цитировать
where id=?" -- Я так понял, что \'?\' и есть тот самый plaseholder?

Точно.:)) Только не так буквально - это технология. которая позволяет подставлять данные в запрос, а вот в качестве места подстановки используются знаки вопроса.:))
Чем она безопаснее понятно? (в отличие от вставки переменных в строку запроса)
2B OR NOT 2B = FF

Оффлайн SteelRat

  • Funk U!
  • Старожил
  • ****
  • Сообщений: 290
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thewebfactory.fatal.ru
Ну, вроде с этим разобрался.
« Ответ #8 : 15 Мая 2002, 18:36:13 »
И далее идёт ->execute($var1,$var2), я прав?
Debian/GNU Linux is rulezz...

Оффлайн SteelRat

  • Funk U!
  • Старожил
  • ****
  • Сообщений: 290
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thewebfactory.fatal.ru
И
« Ответ #9 : 15 Мая 2002, 18:41:14 »
Они последовательно подставляются на места ?
Debian/GNU Linux is rulezz...

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Software error:
« Ответ #10 : 15 Мая 2002, 23:59:26 »
Цитировать
И далее идёт ->execute($var1,$var2), я прав?
Они последовательно подставляются на места ?

Да.
2B OR NOT 2B = FF

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Software error:
« Ответ #11 : 16 Мая 2002, 03:23:23 »
Цитировать
И
Они последовательно подставляются на места ?

;) может все-таки стоит
1. посмотреть доки по DBI, есть даже русский перевод на http://perldoc.narod.ru

2.  книжку какую-нибудь поиметь?

+ ;) твой вариант "формирования" запроса, оставляет желать лучшего - это по большей части касается структуры скрипта, оч. много всего, можно пропустить какое-нибудь значение.
Лучше организовать массив с именами полей, ну вроде твоих \'recipient_now_contry\' -  @data_names
а потом
$db_query = \'INSERT INTO BAZA_BONCHA VALUES (\'.
join(\',\',map{$dbh->quote($PostedData{$_}) @data_names}).
\')\';

и виднее лучше, и добавлять проще новые поля в процессе разработки + не забудешь ничего, потому как все в одном массиве.
 в исканиях.

Оффлайн SteelRat

  • Funk U!
  • Старожил
  • ****
  • Сообщений: 290
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thewebfactory.fatal.ru
Thanks!
« Ответ #12 : 16 Мая 2002, 12:15:40 »
http://perldoc.narod.ru я читал. Ну и запутанная в некоторых местах весч.
Кнужку я поимел. И сразу творить ;-). Чего-то там "Программирование на PERL DBI"...
+ Я пока ещё не организовывал удобность, а добивался, чтобы работало. Представленныый вариант, кстати, делает тоже самое, что и мой скрипт, но строчек занимает раза в 4 меньше. ;-).
Вообщем, к базе мне осталось сделать поиск да обновление данных и всё будет готово...
Debian/GNU Linux is rulezz...

Оффлайн SteelRat

  • Funk U!
  • Старожил
  • ****
  • Сообщений: 290
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thewebfactory.fatal.ru
Кстати,
« Ответ #13 : 16 Мая 2002, 12:17:19 »
треть/четверть книги занимает, как-раз эта самая спецификация по dbi с http://perldoc.narod.ru.
Debian/GNU Linux is rulezz...

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Software error:
« Ответ #14 : 16 Мая 2002, 12:45:16 »
Цитировать
треть/четверть книги занимает, как-раз эта самая спецификация по dbi с http://perldoc.narod.ru.

это вообще то DBI, куда ж от первоисточников деться?
 в исканиях.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28