미안 제목이별로 이해가되지 않는다면 설명하겠습니다.perl이 페이지 출구의 데이터를 지우지 않음
필자는 직장에서 사용해야하는 Perl을 배우기 때문에 테스트 프로그램을 실행하고 있습니다. 웹 양식 (이름, 나이, 위치)에 데이터를 입력하고 MySQL 데이터베이스를 검색하여 일치하는 항목을 찾습니다. 검색 할 때 일치하는 결과가 화면에 출력됩니다. 그러나 양식으로 돌아가서 다시 검색하면 결과를 찾을 수 없다는 것을 알기 때문에 마지막으로 발견 된 레코드 만 표시되며 그 이유는 알 수 없습니다.
누군가 나를 도와 줄 수 있습니까?
미리 감사드립니다.
# Read the standard input (sent by the form):
read(STDIN, $FormData, $ENV{'CONTENT_LENGTH'});
# Get the name and value for each form input:
@pairs = split(/&/, $FormData);
# Then for each name/value pair....
$db = DBI->connect($conn->DataSource(), $conn->Username(), $conn->Password()) or die "Unable to connect: $DBI::errstr\n";
foreach $pair (@pairs)
{
# Separate the name and value:
($name, $value) = split(/=/, $pair);
#replace + with space as + means space when data is collected
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
# Store values in a hash called %FORM:
$FORM{$name} = $value;
}
$query = $db->prepare("SELECT * FROM person WHERE Name = '".$FORM{'PName'}."' AND Age = '".$FORM{'Age'}."' AND Location = '".$FORM{'Location'}."'");
$query->execute();
# BIND TABLE COLUMNS TO VARIABLES
$query->bind_columns(undef, \$name, \$age, \$location);
# LOOP THROUGH RESULTS
$row = 0;
while($query->fetch())
{
push @Peeps, Person->New();
$Peeps[$row]->Name($name);
$Peeps[$row]->Age($age);
$Peeps[$row]->Location($location);
$row++;
}
$db->disconnect(); #disconnect from the db
print '<table>';
for($i = 0; $i <= $#Peeps; $i++)
{
print "<tr><td>$Peeps[$i]{'NAME'}</td><td>$Peeps[$i]{'AGE'}</td><td>$Peeps[$i]{'LOCATION'}</td></tr>";
}
print '</table>';
$db->disconnect(); #disconnect from the db
을 펄 스크립트로. 이것은 무엇보다도 브라우저 캐싱 문제와 비슷하게 들립니다. – Sorpigal
왜 CGI 모듈을 사용하지 않습니까? 그것은 많은 코드를 단순화합니다! –
코드에 심각한 보안 문제 및 기타 문제점이 있습니다. 다른 것을하기 전에, 당신이 사용하고있는 학습 자료를 버리고 [Modern Perl] (http://onyxneon.com/books/modern_perl/)과 같은 좋은 (무료) 책을 구하거나이 [ Perl Tutorial] (http://perl-tutorial.org/) 리소스를 참조하십시오. – friedo