On Wed, Jun 26, 2002 at 12:35:26PM -0400, James Williams wrote:
> Hi everyone,
>
> I'm running a script that is supposed to insert rows into a table, but
> consistantly don't do so. I have tried both a prepare/execute and a do
> statement, and neither work.
>
> The weird thing is, I have a conditional die statement which should
> print something if the execute fails, but this never works either. I've
> tried printing the variables following the execute statement, so I know
> they are defined and I also know the environment variables are correct.
>
> This also happens with a delete statement but select queries work fine.
>
> Could someone give me some pointers I could use for troubleshooting?
> Some code snipets follow below.
>
> Thanks,
>
> -James
>
> ======================================
> sub Print_Sites_Added_Page {
>
> $sth_site_stuff=$dbh->prepare("
> SELECT nvl(name, 'None'), type, url
> FROM active
> WHERE id = ?");
>
> $sth_add_sites=$dbh->prepare("INSERT INTO user_sites
> (userid, siteid, sitename)
> VALUES (?,?,?)");
>
> print &PrintHeader;
> print p("<h3>Monitor Additional Sites:</h3>\n");
> print $alert;
> print hr();
> print p("The following sites have been added:");
> print start_form(-action => '/PA2-bin/monitored_sites.html',
> -method => POST), "\n";
>
> foreach $sid (@new_adds) {
Where is @new_adds assigned? If the array is empty, the loop will be
skipped and $sth_add_sites will never be executed; that could be what is
happening.
> $sth_site_stuff->execute($sid);
> @row=$sth_site_stuff->fetchrow_array;
> ($site_name, $type, $url) = @row;
> $sth_add_sites->execute($uid,$sid,$site_name) || die print
> "Can't insert new site:<br>$DBI::errstr<hr> ";
This is an odd expression; you are using the return value from print as the
argument to die, so your error message to STDERR would look like
"1 at yourscript.pl line whatever."
> print "<b>$type://$url</b><br>\n";
Hmm, if you're seeing this line in the output, that would contradict my
theory that @new_adds is empty.
Do you have AutoCommit on or off? If off, do you call commit()?
Ronald