Lieber Andreas,
INSERT INTO $Database.$Table (Name,Bild,Hoch,Breit,Url,Infos,Daten,Datei) VALUES('$Bezeichner','$Bild','$Hoch','$Breit','$Adresse','$Infos','$Daten','$Datei')
wie @dedlfix schon richtig schrieb, brauchst Du für die Bezeichner Backticks:
$sql = sprintf(
'INSERT INTO `$1$s`.`%2$s` ('
.' `Name`,'
.' `Bild`,'
.' `Hoch`,'
.' `Breit`,'
.' `Url`,'
.' `Infos`,'
.' `Daten`,'
.' `Datei`'
.') VALUES ('
."'%3\$s',"
."'%4\$s',"
."'%5\$s',"
."'%6\$s',"
."'%7\$s',"
."'%8\$s',"
."'%9\$s',"
."'%10\$s'"
.')',
// Werte alle erst noch SQL-gerecht escapen! SONST SLQ-INJECTION LÜCKE!!!
$Datenbank,
$Table,
$Bezeichner,
$Bild,
$Hoch,
$Breit,
$Adresse,
$Infos,
$Daten,
$Datei
);
Ich arbeite mit der PDO-Erweiterung in PHP. Dort macht man das im Prinzip so:
$dsn = "mysql:host=localhost;dbname=$Datenbank";
$user = 'username';
$pass = 'password';
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
);
$dbh = new PDO($dsn, $user, $pass, $options);
$sql = sprintf(
'INSERT INTO `:table` ('
.' `Name`, `Bild`, `Hoch`, `Breit`, `Url`, `Infos`, `Daten`, `Datei`'
.') VALUES ('
.':bezeichner, :bild, :hoch, :breit, :adresse, :infos, :daten, :datei'
.')';
$params = array(
':bezeichner' => $Bezeichner,
':bild' => $Bild,
':hoch' => $Hoch,
':breit' => $Breit,
':adresse' => $Adresse,
':infos' => $Infos,
':daten' => $Daten,
':datei' => $Datei
);
$statement = $dbh->prepare($sql);
$statement->execute($params);
Das Beispiel hat aber noch keine Fehlerbehandlung. Dafür werden aber die Variablenwerte korrekt SQL-gemäß escaped.
Liebe Grüße,
Felix Riesterer.