Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Черт побери- как это съесть? Регулярка - убить символ # 
V
    Опции темы
trigger
Дата 26.7.2008, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 12.7.2006

Репутация: нет
Всего: нет



Доброго времени суток.

стоит банальная задача - принять параметр и всунуть в базу
в значении может встретиться символ # - от которого уже зубы сводит
после того как посыпались ошибки пытался избавиться от этого символа - но безуспешно

$string =~ s/#/ /; не помогает 



что посоветуете?
PM MAIL WWW ICQ   Вверх
arto
Дата 26.7.2008, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



а какая проблема?

# perl -MDBI -le 'my $dbh = DBI->connect (@ARGV[0..2]); $dbh->do ("CREATE TABLE a (a text)"); $dbh->do ("INSERT INTO a (a) VALUES (?)",{},$ARGV[3]); print $dbh->selectall_arrayref ("SELECT * FROM a")->[0]->[0]; $dbh->do ("DROP TABLE a");' "dbi:Pg:" "" "" "###"
###
#
PM MAIL ICQ   Вверх
trigger
Дата 27.7.2008, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 12.7.2006

Репутация: нет
Всего: нет



все намного хуже - этот символ просто напросто комментирует код

также задействован CGI

Это сообщение отредактировал(а) trigger - 27.7.2008, 00:05
PM MAIL WWW ICQ   Вверх
arto
Дата 27.7.2008, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



и чего?

проблема-то какая?
PM MAIL ICQ   Вверх
korob2001
Дата 27.7.2008, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Какую ошибку ты получаешь?
Цитата(trigger @  26.7.2008,  20:29 Найти цитируемый пост)
после того как посыпались ошибки пытался избавиться от этого символа - но безуспешно

Какие ошибки?


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
arto
Дата 27.7.2008, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



btw,

# perl -MCGI -MDBI -le 'my $q = new CGI ($ARGV[3]); my $dbh = DBI->connect (@ARGV[0..2]); $dbh->do ("CREATE TABLE a (a text)"); $dbh->do ("INSERT INTO a (a) VALUES (?)",{},$q->param("param")); print $dbh->selectall_arrayref ("SELECT * FROM a")->[0]->[0]; $dbh->do ("DROP TABLE a");' "dbi:Pg:" "" "" "param=%23%23%23"
###
#
PM MAIL ICQ   Вверх
trigger
Дата 27.7.2008, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 12.7.2006

Репутация: нет
Всего: нет



DBD::mysql:smileb do failed: Column set to default value; NULL supplied to NOT NULL column 'stors' at row 1 at...... 


тоесть получается что код следующий за этой переменной закоментирован и остальные переменные не определились.
PM MAIL WWW ICQ   Вверх
arto
Дата 27.7.2008, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



попытайтесь привести код, который вызывает ошибку
PM MAIL ICQ   Вверх
trigger
Дата 27.7.2008, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 12.7.2006

Репутация: нет
Всего: нет



Код

    my $s_l = escapeHTML(param('S_l'));
    my $s_k = escapeHTML(param('S_k'));

    $dbh->do (qq{
                UPDATE $table SET
                S_k=?, S_l=?
                WHERE id = $id and a_ID = $u_id},
                undef,
                $s_k,$s_l);

PM MAIL WWW ICQ   Вверх
arto
Дата 27.7.2008, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



работает:

# perl -MCGI -MDBI -le 'my $table = shift; my $q = new CGI ($ARGV[3]); my $dbh = DBI->connect (@ARGV[0..2]); $dbh->do ("CREATE TABLE $table (a text)"); $dbh->do ("INSERT INTO $table (a) VALUES (?)",{},$q->param("param")); print $dbh->selectall_arrayref ("SELECT * FROM $table")->[0]->[0]; $dbh->do ("DROP TABLE $table");' "aaa" "dbi:mysql:database=test" "" "" "param=%23%23%23%20test%20%23%23%23"
### test ###
#
PM MAIL ICQ   Вверх
korob2001
Дата 27.7.2008, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Вот такой код работает, отлично:
Код

#!/usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
use CGI;
use DBI;

my $cgi = new CGI;

sub frm {
    print $cgi->start_form(),
    $cgi->textfield(-name => "name"),
    $cgi->submit(-name => "send", -value => "Send"),
    $cgi->end_form();
}

sub show_param {
    my $param = shift || croak "Must be one parameter.";
    print $param;
    &add_to_base($param);
}

sub add_to_base {
    my $param = shift || croak "Must be one parameter.";
    my($dbh, $sth, $sql, $res) = ();
    $sql = "INSERT INTO only_test (prm) VALUES (?)";
    $dbh = DBI->connect("DBI:mysql:host=localhost;database=tst","root","111111") or DBI->errstr;
    $sth = $dbh->prepare($sql);
    $res = $sth->execute($param);
    if ($res) {
         print "<br />Запись добавлена в базу данных.";
    } else {
         print "<br />Неудалось добавить запись. " . DBI->errstr;
    }
    $sth->finish();
    $dbh->disconnect();
}

print $cgi->header(-charset => "Windows-1251");
print $cgi->start_html();

if ($cgi->param("send")) {
    &show_param($cgi->param("name"));
} else {
    &frm();
}

print $cgi->end_html();

Код базы и таблицы
Код

CREATE DATABASE IF NOT EXISTS tst;
CREATE TABLE IF NOT EXISTS only_test (
  Id  INT  UNSIGNED  NOT NULL AUTO_INCREMENT,
  prm      VARCHAR(250)    NOT NULL    DEFAULT "",
  PRIMARY KEY(Id)
);


Это сообщение отредактировал(а) korob2001 - 27.7.2008, 01:53


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
trigger
Дата 28.7.2008, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 12.7.2006

Репутация: нет
Всего: нет



Спасибо - нашел проблему.

Не обратил внимания что параметры приходят после обработки Javascript в котором ко всему производится перекодировка символов.
по этой причине символ # и сбивал всю работу.

PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0611 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.