Cheatah: (MySQL) Index auf BLOBs arbeitet falsch(?)

Beitrag lesen

Hi,

WHERE zahlenfeld=? AND ip=?
Hast du daran gedacht, deine Nichtnumerischen Datenbankfelder zu quoten?

das erübrigt sich dadurch, dass ich mit Bindvariablen arbeite... ;-)

Ich hab mir fuer solche Abfragen eine Routine gebaut, die so aussieht:

Danke dafür. Sieht allerdings etwas proprietär aus (kannst Du es generisch gestalten? Dann wär's evtl. was für CPAN), und Typen wie FLOAT und DOUBLE hast Du auch vergessen. Aber die Idee gefällt mir - auch wenn ich trotzdem bei Bindvariablen bleibe *g*

sub MakeRequest {
  my $table = shift;
  my $request = shift;
  my $like = shift;

my ($table, $request, $like) = (shift||'', shift||'', shift||'');

my %hash;
  my $i;

my (%hash, $i, $query, ...);

Ist Geschmackssache, aber ich find's so übersichtlicher :-)

if (not $table) {
    return;
  }

return unless $table ;-)

($keyname, $value) = split(/ = /,$input[$i],2);

Hier gehst Du davon aus, dass 'WHERE x = ...' mit Leerzeichen geschrieben wird, sehe ich das richtig? Was ist mit BETWEEN?

if ($like) {

Hm, irgendwie verstehe ich das ganze glaube ich noch nicht. Erlaubst Du hier nur _entweder_ LIKE-Abfragen oder _keine_ LIKEs?

$query = "SELECT * FROM $table\nWHERE $query";

Oh. Selektive SELECTs, Joins usw. erlaubst Du nicht? Gut, dass MySQL keine Subselects kann... ;-)

Cheatah