IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   КАК ДОБАВИТЬ ДАННЫЕ? (https://www.imho.ws/showthread.php?t=31441)

kurlya 06.06.2003 00:28

КАК ДОБАВИТЬ ДАННЫЕ?
 
ЕСТЬ ТАКАЯ ФОРМА:
#!/usr/bin/perl
use CGI ;
use strict;
print "Content-Type:text/html;win-1251\n\n";
print "<html><body bgcolor='lightblue' text='black' link='green' vlink='magenta'><h2>test</h2><hr>\n";
print "<pre>";
print "<b>Заполните пожалуйста предложенную форму и введенные Вами данные будут добавлены в таблицу </b>";
print "<form Method=Post Action=/cgi/add.pl>";
print "<pre>";
print " <b> NPP </b> <input type=text name=npps value='' maxlength=3 size=2>";
print "<b> NUMBER </b><input type=text name=numbers value='' maxlength=7 size=7>";
print" <b> FILM </b><input type=text name=films value='' maxlength=30 size=10>";
print"<b> AUTORS </b><input type=text name=autorss value='' maxlength=20 size=10>";
print "\n";
print "\n";
print "\n";
print"<b>TIMECODE</b><input type=text name=timecodes value='' maxlength=6 size=6>";
print"<b> ANNOTATION </b><input type=text name=annotations value='' maxlength=50 size=10>";
print "\n";
print "\n";
print "\n";
print"<b>DATA DATA DATA";
print "\n";
print"RELEASE OCENKI END</b>";
print "\n";

print"<input type=text name=date_of_recordss value='' maxlength=10 size=10>";
print"<b> </b><input type=text name=data_ocenkis value='' maxlength=10 size=10><b> ";
print" </b><input type=text name=data_ends value='' maxlength=10 size=10>";

print "\n";
print "\n";
print "\n";

print"<b> </b> <input type=submit value='INSERT RECORD'></pre> ";
print "</body></html>\n";

И ТАКОЙ СКРИПТ:

#!/usr/bin/perl
use CGI ;
$query = new CGI;
print "Content-Type:text/html;win-1251\n\n";
print "<html><body bgcolor='lightblue' text='black' link='green' vlink='magenta'><h2>test</h2><hr>\n";
use dbi;
use Mysql;
$dbh = Mysql->connect($localhost, $ddd, $root);
$dbh->selectdb("ddd");
$np = $query->param("npps");
$numb = $query->param("numbers");
$fil = $query->param("films");
$autor = $query->param("autorss");
$time = $query->param("timecodes");
$annot = $query->param("annotations");
$data_rel = $query->param("date_of_recordss");
$data_ocen = $query->param("data_ocenkis");
$data_en = $query->param("data_ends");


$sth = $dbh->query ("insert into records(npp) values ($np)");
$sth = $dbh->query ("insert into records(number) values ($numb)");
$sth = $dbh->query ("insert into records(film) values ('$fil')");
$sth = $dbh->query ("insert into records(autors) values ('$autor')");
$sth = $dbh->query ("insert into records(time_code) values ($time)");
$sth = $dbh->query ("insert into records(annotation) values ('$annot')");
$sth = $dbh->query ("insert into records(data_ocenki) values ($data_ocen)");
$sth = $dbh->query ("insert into records(date_of_rec) values ($data_rel)");
$sth = $dbh->query ("insert into records(data_end) values ($data_en)");

print "<a href='http://localhost/'>в начало</a>";
print "</body></html>\n";

ВОПРОС:

ПОЧЕМУ В БАЗУ ДАННЫХ ВНОСИТСЯ ТОЛЬКО СТРОКА FILM?

Stasik 06.06.2003 02:40

ну зачем же кричать? :)

вносится, потомучто в кавычках

мож я и дурак? :) но не стоит ли всё одним запросом?

Goryn 06.06.2003 11:29

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

$sth = $dbh->query ("insert into records(npp) values ($np)"); -
неверно !

надо писать

$sth = $dbh->query ("insert into records(npp) values ('$np');");

В принципе желательно для перестраховкивсе значения заключать в кавычки.

Та же хорошо выводить ошибку SQL или просматрвать на этапе отладки генерируемый запрос:

$quertmp="insert into records(npp) values ('$np');";
print "$quertmp";
$sth = $dbh->query ($quertmp);

Stasik 06.06.2003 14:57

а я что сказал? :)

Goryn 06.06.2003 15:55

То же самое. Просто мне захотелось выпендриться и дать более развернутый и аргументированный ответ :xex:

medved2002 06.06.2003 17:18

Мне кааться что так будет правильнее...
$sth = $dbh->query ("insert into records(npp, number, film, autors, time_code, annotation, data_ocenki, date_of_rec, data_end) values ('$np', '$numb', '$fil', '$autor', '$time', '$annot', '$data_ocen', '$data_rel', '$data_en')");

ибо иначе он вставит кучу записей в которой бедт только один столбец правильный

Stasik 06.06.2003 19:58

Я вот тож думаю.. но а мож так и задумано? :)

medved2002 07.06.2003 15:24

навряд ли


Часовой пояс GMT +4, время: 16:31.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.