2016-01-18 51 views
1

我在Perl中有以下綁定查詢。用Perl插入MySQL

$sth = $dbh->prepare("insert into tbl_name values(?,?)"); 
$sth->execute($val1, $val2); 

然而,如果在tbl_name表中的第coloumn就是一個自動增加的主鍵?我該怎麼處理這個領域?

回答

2

你可以給第二列的僅僅是價值,這樣

my $sth = $dbh->prepare('INSERT INTO tbl_name (col2) VALUES (?)'); 
$sth->execute($val2); 
5

這比一個Perl的一個SQL的問題。

我該怎麼辦處理[自動增量]場?

請不要指定它。明確地命名你有價值的所有列,並忽略其他列。

這將導致它們採用它們的默認值,在自動增加字段的情況下,它將成爲下一個增量。

$sth = $dbh->prepare("insert into tbl_name (column_name) values (?)"); 
$sth->execute($val2); 
0
$sth = $dbh->prepare("insert into tbl_name values(?,?)"); 
$sth->execute(undef, $val2); 

$sth = $dbh->prepare("insert into tbl_name (col2_name) values (?)"); 
$sth->execute($val2); 
1

正如其他人所說,你只是不通過是明確了哪些字段,你要插入,所以當他們說指定字段的值:

my $sth = $dbh->prepare('INSERT INTO tbl_name (col2) VALUES (?)'); 
$sth->execute($val2); 

會很好。

我只想補充一點,你可以使用

$dbh->{'mysql_insertid'} 

來獲取被指派給該行,這往往就派上用場的ID。