Hendra,
I have a similiar type of script and what I do before I execute the insert
command, execute a "select count(*) on the record - where the nik = the nik
you were going to insert. If the result returned is > 0, then we do an
update on the record, otherwise we do the insert.
Patty
Hendra Kusnandar
<hendrakusnandar@
yahoo.com> To
[EMAIL PROTECTED]
03/27/2004 02:57 cc
AM [EMAIL PROTECTED]
Subject
insert into two table and check
table perl DBI
#!/usr/bin/perl
use DBI;
sub insert_user {
my ($nim, $nama, $password) = @_;
my ($insert_sql,$sth);
$database = "practice_perl";
$dbuser = "hendra";
$dbpasswd = "hendra";
$dbhost = "localhost";
$dsn = "DBI:mysql:database=$database;host=$dbhost";
$dbh = DBI->connect($dsn,$dbuser,$dbpasswd) || die $DBI::errstr;
$insert_sql = qq {insert into user (nik,name,password) values ('$nik',
'$name', '$password')};
$sth = $dbh->prepare($insert_sql) || die "prepare: $insert_sql:
$DBI::errstr";
$sth->execute || die "Unable to execute query: $dbh->errstr\n";
$sth->finish;
$dbh->disconnect;
}#end insert_user
sub insert_log {
my ($input) = @_;
my ($insert_sql_log);
$database = "practice_perl";
$dbuser = "hendra";
$dbpasswd = "hendra";
$dbhost = "localhost";
$dsn = "DBI:mysql:database=$database;host=$dbhost";
$dbh = DBI->connect($dsn,$dbuser,$dbpasswd) || die $DBI::errstr;
$insert_sql_log = "insert into log values ('',".$dbh->quote($input).")";
$dbh->do($insert_sql_log) || die ($dbh->errstr);
return $dbh->{'mysql_insertid'};
$dbh->disconnect;
}#end insert_log
print "INPUT : ";
while ($input = <>) {
#format insert : nik,name,password
if($input =~/^(\d{8}),(.*),(\w{6})$/i){
insert_user($1,$2,$3);
}else{
insert_log($input);
print "Wrong Format";
}#end if
print "\nINPUT : ";
}#end while
hai everyone, i have write scripts perl on the top and if i input data
12345678,Hendra Kusnandar,123456 data will insert
into table user, and if i input wrong format data will insert into log.
this scripts is work but if i insert again 12345678,Hendra Kusnandar,123456
scripts will error and the message are : DBD::mysql::st execute failed:
Duplicate entry '12345678' for key 1 at ./test.pl line 20, <> line 1.
Unable to execute query: DBI::db=HASH(0x81e1ed0)->errstr
i know field nik in table user on mysql is primary key that i can't insert
same data...how to correct this scripts if i insert the same data and will
show the message on shell "cannot insert, same data".
second i want if data insert into table user also data can insert into
table log
I have tried every way possible I can think of and I cannot get it to work
at all. Any help with this would be greatly appreciated.
regards,
hendra kusnandar
---------------------------------
Do you Yahoo!?
Yahoo! Finance Tax Center - File online. File on time.