Tag alex_.
ich will einfach falsche Ausdrücke feststellen [...] weil man in mysql nämlich auch nach regexp suchen kann, nur bricht mein perl script ab, wenn die usereingabe ne falsche regexp war
Dann fange diesen Fehler ab und lass das Script nicht einfach so sterben:
use DBI;
use CGI qw /param/;
Regex holen
my $regexp = param('regex');
Verbindung herstellen
my $dbh = DBI->connect("DBI:$driver:$database:$host",
$user,
$password ,
{ PrintError => 0,
RaiseError => 0 }
) || fehlerausgabe($DBI::errstr);
Statement zusammenbauen
my $Statement = "SELECT foo FROM bar WHERE blubb REGEXP '$regexp'";
my $sth = $dbh->prepare($Statement) || regexpfehler($regexp);
weiter im Erfolgsfall wie gehabt
Dann musst du dir nur noch eine Fehlerroutine zu basteln, die eine aussagekräftige Meldung liefert. Gibt sicher auch elegantere Wege, der o.g. sollte jedenfalls funktionieren.
momentan hab ich raiseerror an und checke $@, das bringt in dem fall aber nix (glaub ich)
Du weißt hoffentlich, was RaiseError bedeutet:
The RaiseError attribute can be used to force errors to raise exceptions rather than simply return error codes in the normal way. It is "off" by default. When set "on", any method which results in an error will cause the DBI to effectively do a die("$class $method failed: $DBI::errstr"), where $class is the driver class and $method is the name of the method that failed.
Siechfred
»Sie kochten heimlich mit Wasser und tranken öffentlich Wein.«