Andreas Korthaus: Unchecked Checkboxen nicht im $_POST-Array

Beitrag lesen

Hi!

Das Umbauen der beschriebenen Abfrage zu einem INSERT ist ja auch nicht sooo schwer. Du solltest bei formularbasierten Daten aber von der Schreibweise

insert into $table ($fields) values ($values)

Abstand nehmen zu Gunsten der Schreibweise

insert into $table set
  $_spalte[1][name] = 'mysql_escape_string($_wert[$_spalte[1][name]])',
  $_spalte[2][name] = 'mysql_escape_string($_wert[$_spalte[2][name]])',

Bedenke dabei aber, dass das nicht jede DB versteht. IMHO sollte man sich besser die erste Variante angewöhnen.

btw., wie man solche Sachen noch ganz nett machen kann (PEAR::DB): http://pear.php.net/manual/en/package.database.db.intro-auto.php#AEN10611

z.B. so:

<?php
require_once 'DB.php';

$user = 'foo';
$pass = 'bar';
$host = 'localhost';
$db_name = 'clients_db';

$dsn = "mysql://$user:$pass@$host/$db_name";
$db = DB::connect($dsn);

$fields_values = array(
    $_spalte[1][name] => $db->quote($_wert[$_spalte[1][name]]),
    $_spalte[2][name] => $db->quote($_wert[$_spalte[2][name]])
);
$table_name = 'user';
$db->autoExecute($table_name, $fields_values, DB_AUTOQUERY_INSERT);
?>

Vielleicht kann man den "$fields_values"-Array auch noch einfacher/direkter erzeugen.

Grüße
Andreas

PS: Ab PHP 4.3 wird die Verwendung von mysql_real_escape_string() empfohlen oder eben $db->quote() bei PEAR::DB.