--- loncom/interface/lonmysql.pm 2002/07/30 18:26:40 1.3 +++ loncom/interface/lonmysql.pm 2002/08/21 21:29:51 1.7 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # MySQL utility functions # -# $Id: lonmysql.pm,v 1.3 2002/07/30 18:26:40 matthew Exp $ +# $Id: lonmysql.pm,v 1.7 2002/08/21 21:29:51 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -327,7 +327,10 @@ sub connect_to_db { $Apache::lonnet::perlvar{'lonSqlAccess'}, { RaiseError=>0,PrintError=>0}))) { $debugstring = "Unable to connect to loncapa database."; - if ($dbh->err) { + if (! defined($dbh)) { + $debugstring = "Unable to connect to loncapa database."; + $errorstring = "dbh was undefined."; + } elsif ($dbh->err) { $errorstring = "Connection error: ".$dbh->errstr; } return undef; @@ -481,7 +484,7 @@ sub update_table_info { # Determine the column order # $db_command = "DESCRIBE $tablename"; - my $sth = $dbh->prepare($db_command); + $sth = $dbh->prepare($db_command); $sth->execute(); if ($sth->err) { $errorstring = "$dbh ATTEMPTED:\n".$db_command."\nRESULTING ERROR:\n". @@ -570,7 +573,7 @@ sub create_table { # skip blank items. push (@Columns,$col_des) if ($col_des ne ''); } - if (exists($table_des->{'fulltext'})) { + if (exists($table_des->{'fulltext'}) && (@{$table_des->{'fulltext'}})) { push (@Columns,'FULLTEXT ('.join(',',@{$table_des->{'fulltext'}}).')'); } $request .= "(".join(", ",@Columns).") "; @@ -609,7 +612,6 @@ Used internally to prevent table name co ############################### sub get_new_table_id { my $newid = 0; - my $name_regex = '^'.$ENV{'user.name'}.'_'.$ENV{'user.domain'}."_(\d+)\$"; my @tables = &tables_in_db(); foreach (@tables) { if (/^$ENV{'user.name'}_$ENV{'user.domain'}_(\d+)$/) { @@ -657,11 +659,6 @@ sub get_rows { } $debugstring = "Got rows matching $condition"; my @Results = @{$sth->fetchall_arrayref}; - foreach my $row (@Results) { - for(my $i=0;$i<@$row;$i++) { - $row->[$i]=&Apache::lonnet::unescape($row->[$i]); - } - } return @Results; } @@ -711,7 +708,7 @@ sub store_row { @Parameters = @$rowdata; } elsif (ref($rowdata) eq 'HASH') { foreach (@{$Tables{$tablename}->{'Col_order'}}) { - push(@Parameters,&Apache::lonnet::escape($rowdata->{$_})); + push(@Parameters,$rowdata->{$_}); } } $sth->execute(@Parameters); @@ -738,7 +735,7 @@ Returns undef on error. ########################################### sub tables_in_db { return undef if (!defined(&connect_to_db())); - my $sth=$dbh->prepare('SHOW TABLES;'); + my $sth=$dbh->prepare('SHOW TABLES'); $sth->execute(); if ($sth->err) { $errorstring = "$dbh ATTEMPTED:\n".'SHOW TABLES'. @@ -808,6 +805,41 @@ sub check_table { return $result; } +########################################### + +=pod + +=item &remove_from_table($table_id,$column,$value) + +Executes a "delete from $tableid where $column like binary '$value'". + +=cut + +########################################### +sub remove_from_table { + my ($table_id,$column,$value) = @_; + return undef if (!defined(&connect_to_db())); + # + $table_id = &translate_id($table_id); + my $command = 'DELETE FROM '.$table_id.' WHERE '.$dbh->quote($column). + " LIKE BINARY ".$dbh->quote($value); + my $sth = $dbh->prepare($command); + $sth->execute(); + if ($sth->err) { + $errorstring = "ERROR on execution of ".$command."\n".$sth->errstr; + return undef; + } + my $rows = $sth->rows; + return $rows; +} + + 1; __END__; + +=pod + +=back + +=cut