By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,963 Members | 1,751 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,963 IT Pros & Developers. It's quick & easy.

Dynamische Datenbankbefehle erzeugen

P: n/a
Ich habe folgendes Problem:
Ein Update-Befehl für Mysql soll dynamisch erzeugt werden.
Dazu benenne ich alle Variablen, die zum Eintrag geliefert werden
genauso wie die Spaltennamen in der SQL Tabelle.

Das Skript sieht stark vereinfacht so aus:
(In dieser Form macht es natürlich keinen Sinn so vorzugehen, das
Original ist wesentlich komplexer und größer...)
Es gibt in einer mysql Tabelle die Tabellenspalten
Name, Straße, Ort, id

Ein Formular liefert an das Skript
$Name
$Straße
$Ort
$id

Ich will einen SQL Updatebefehl erzeugen,
lese die SQL Feldnamen aus und schreibe

$update = "$Feldname[1]='$$Feldname[1]',";
$update .= "$Feldname[2]='$$Feldname[2]',";
$update .= "$Feldname[3]='$$Feldname[3]'";

Wobei Feldname[1] den Wert Name enthält,
$Feldname[2] den Wert Straße und
$Feldname[3] den Wert Ort

Die Query ist dann

MYSQL_QUERY( "UPDATE tabelle SET
$update
WHERE (id='$id')");
}

Als Ergebnis erhalte ich nicht die gewünschten Einträge
Fritz Rosenweg und Stuttgart
in die Tabelle, sondern die Einträge
$Name $Straße und $Ort

Das Problem liegt also beim Erzeugen der Variablen $update:
Name = "$$Name",

Würde ich den Updatebefehl ausschreiben, würde ich ja schreiben
Name = '$Name', usw...

Da ich den String "Name" aber durch auslesen des Spaltennamen erhalte,
muss ich es irgendwie anders hinbekommen.

Wer kann mir helfen??

Danke vielmals!

Christoph Breithack
Jul 17 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
sm***@incredibleweb.de (Christoph) wrote:
Ich will einen SQL Updatebefehl erzeugen,
lese die SQL Feldnamen aus und schreibe

$update = "$Feldname[1]='$$Feldname[1]',";
$update .= "$Feldname[2]='$$Feldname[2]',";
$update .= "$Feldname[3]='$$Feldname[3]'";


HI Christoph,

Das problem liegt an der weise wie PHP variables in strings parsed. PHP
kann hier nicht wissen wo die variable endet.

Also:

Entweder:
$update = $Feldname[1]."='".$$Feldname[1]."',";
$update .= $Feldname[2]."='".$$Feldname[2]."',";
$update .= $Feldname[3]=."'".$$Feldname[3]."'";

Oder:
$update = "{$Feldname[1]}='{$$Feldname[1]}',";
$update .= "{$Feldname[2]}='{$$Feldname[2]}',";
$update .= "{$Feldname[3]}='{$$Feldname[3]}'";

Siehe auch:
http://uk.php.net/manual/en/language...ge.types.strin
g.parsing

HTY;
JOn
Jul 17 '05 #2

P: n/a
Danke vielmals - das hat das Problem gelöst!
Christoph
Jul 17 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.