0
사용자 입력을 기반으로 MySQL에서 테이블을 만들려고합니다. 이상적으로 Perl 스크립트는 데이터베이스에 연결하여 사용자로부터받은 변수가있는 테이블을 생성합니다. 여기 내 스크립트입니다 :MySQL에서 Perl을 사용하여 변수를 사용하여 테이블을 만들 때 문제가 발생했습니다.
DBD::mysql::db do failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 at /path/to/scripts/dbTest.pl line 28, <> line 2.
DBD::mysql::db do failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(column VARCHAR(17))' at line 1 at /path/to/scripts/dbTest.pl line 29, <> line 2.
라인 (28)은 DROP 명령은 다음과 같습니다
print "Please enter a name for the table: ";
$tableName = <>;
chomp($tableName);
&createTable ($tableName);
sub createTable
{
use DBI;
my $platform = "mysql";
my $database = "example";
my $host = "localhost";
my $user = "user";
my $pw = "pw";
my $dsn = "dbi:$platform:$database:$host";
my $dbh = DBI->connect($dsn, $user, $pw) or die "Unable to connect: $DBI::errstr\n";
$dbh->do("DROP TABLE IF EXISTS $_");
$dbh->do("CREATE TABLE $table (column VARCHAR(17))");
$dbh->disconnect;
}
하지만 스크립트를 실행하고 값을 입력 할 때 (의는 '테스트'라고하자), 그것은 나에게이 다시 누설한다 , 29 행은 CREATE 명령입니다. 구문을 많이 확인했지만 오류가 발생한 위치를 얻지 못하고 있습니다. 나는 그렇게 단순한 것을 내려다보고 있는가 ..?
음, 확실히 트릭을 했어! @_, $ _ [0-inf] 및 $ _를 서로 바꿔서 사용할 수는 있지만 어딘가에서 읽은 것 같습니다. 내가 그 일에 대해 오해 한 것이 아니라면. [여기] (http://www.comp.leeds.ac.uk/Perl/subroutines.html) "매개 변수"섹션 바로 아래. 이제는 그가 사용할 수 있다는 것을 알았지 만, 인수가 서브 루틴으로 전달 된 것은 아닙니다. 감사합니다. – Arkevius
'$ _'가 기본 변수입니다. '@ _'가 기본 배열입니다. '$ _ [1]'은'@ _' 배열의 두번째 요소입니다. –