phpbar.de logo

Mailinglisten-Archive

Re: mysql: shell <> cgi-script
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: mysql: shell <> cgi-script



Hi,

Hubert Krause <hubert_(at)_vamax.de> schrieb mir:


> Wolfgang Lendl wrote:
> > Tommy wrote:
> > > Beim cgi-script bekomme ich immer die Meldung : ase Selected. (Das sagt mir
> > > bei meinem jetzigen Wissenstand leider nicht viel)
> > 
> > sieht aus wie "No Database Selected"
> 
> Und was bedeutet das genau (siehe meine Anfrage: Perlscript DBI Fehler
> [no Datab?]ase Selected. Geht in shell, nicht per web)? Kann mal jemand
> ein funktionierendes CGI-script hier Posten, das einen insert macht??
> 
> Ich weiß leider nicht was ich falsch mache.

Aber sicher doch. 

Die Routine 'create_profile' ermittelt zunächst alle Spaltennamen der Tabelle
und setzt mittels Platzhaltern für jede Spalte die Werte ein, die in den 
param-Variablen gespeichert sind und vom Formular übergeben wurden. Wenn der
Wert leer ist, wird nichts eingesetzt, wenn das Feld das Attribut 'NOT NULL'
hat, geht es nicht, der Server liefert eine Fehlermeldung.

Grüße,

	Thomas

<--- snip --->

sub create_profile {
  my $dbase   = 'database';
  my $dbuser  = 'user';
  my $dbpass  = 'geheim';
  my $dbhost  = 'host';
  my $dbtable = 'table';
  my $dbh     = &connect($dbase,$dbuser,$dbpass,$dbhost,$dbtable);
  my _(at)_COLUMNS = get_columns($dbh,$dbtable);
  my %param = map(($_ => param $_), param);
  $statement = 'INSERT INTO ' . $dbtable . '('
    . join(', ',       _(at)_COLUMNS)
    . ') VALUES ('
    . join(', ', ('?')x_(at)_COLUMNS)
    . ');';
  $dbh->do($statement, undef, _(at)_param{_(at)_COLUMNS})
        or die "Couldn't insert: ", $dbh->errstr, "\n";
  disconnect($dbh);

}

sub connect {
        my ($dbase, $dbuser, $dbpass, $dbhost, $dbtable) = _(at)__;
        DBI->connect("DBI:mysql:database=$dbase",
                                $dbuser,
				$dbpass
                                )
        or die "Cannot connect to database", $DBI::errstr
}

sub disconnect {
        shift->disconnect
}

sub get_columns {
        my ($dbh, $dbtable) = _(at)__;
        my $COLUMNS = $dbh->selectall_arrayref("show columns from " . $dbtable)
                or die "Fehler beim Ermitteln der Spaltennamen\n", $dbh->errstr;
        map $_->[$[], _(at)_$COLUMNS;
}

<--- snap --->

-- 
Thomas Gericke    *   noris network GmbH   *   Tel.: (09 11) 93 52-0
info_(at)_noris.de * Ihr Internet-Provider in Nuernberg * Fax: 93 52-1 00


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive