sub save_lead { my $self = shift; my $data = shift; my $t_name = $self->get_table_name('leads'); eval { my $count = 0; die "No id in data!\n" unless $data->{'id'}; # Get our database handle; my $dbh = $self->get_db(); if(not $dbh) { $dbh = $self->connect() or die $self->errstr(); } # Validate this id does exist my $res = $dbh->prepare( "select count(*) from `$t_name` where id=?") or die $dbh->errstr(); $res->execute($data->{'id'}) or die $res->errstr(); $res->bind_columns(\$count) or die $res->errstr(); while($res->fetchrow()) { } $res->finish(); # We need to create one! if(not $count) { $res = $dbh->prepare( "insert into `$t_name` (id,description,date_entered,date_modified,created_by,modified_user_id) values (?,?,?,?,?,?) ") or die $dbh->errstr(); $res->execute($data->{'id'}, 'Sugar::save_lead()', $get_now->(),$get_now->(), 1,1) or die $res->errstr(); } $data->{'date_modified'} = $get_now->(); # Build our SQL statement and add values to array my $sql = "update `$t_name` set \n"; my @v; foreach my $header (@{$data->{'HEADERS'}}) { next if $header eq 'id'; $sql .= " `$header`=?,\n"; push @v, $data->{$header}; } chop($sql); chop($sql); $sql .= "\n where id=?;\n"; # Do update my $res = $dbh->prepare($sql) or die $dbh->errstr(); $res->execute(@v, $data->{'id'}) or die $res->errstr(); }; if($@) { $self->{'ERRSTR'} = $@; return 0; } return 1; }