php Insert into problem
Red 14.06.2004 - 18:59 1154 26
Römi
Hausmeister
|
Das mit dem String Verketten ist imo ned notwendig, zumindest bei mir gehts auch so:
"INSERT INTO galerie (ga_a_u_id, ga_name, ga_text, ga_anzeige) VALUES ('$ga_a_u_id', '$ga_name', '$ga_text', '$anzeige')"
|
semteX
begehrt die rostschaufel
|
ja klar gehts auch so. ist aber ned schön und bei arrays ungut zu handlen
|
mat
AdministratorLegends never die
|
bei arrays ungut zu handlen y?
|
semteX
begehrt die rostschaufel
|
klar du kannst es so machen: "blablabla $var[muh] schalalala"; wenn du aber z.b. var[muh1] var[muh2] funkts schon wieder ned => "blablablabla ".$var["muh".$lauf]." schalalalala";
done
|
mat
AdministratorLegends never die
|
klar, deshalb kann mans auch nicht verallgemeinern. wollt nur wissen ob ich etwas nicht geschnallt hab
|
semteX
begehrt die rostschaufel
|
ist das: "blablabla $var[muh] schalalala"
eigentlich "korrekt"? ich mein es wird interprediert... aber das hat ja bekanntlich wenig zu bedeuten
|
mat
AdministratorLegends never die
|
sicher ist das korrekt. das einzige, dass jetzt noch hinzuzufügen wäre um ein php-stringhandling faq zu komplettieren, wäre der grenzfall "schalalalala {$var}in the morning"
|
dio
Here to stay
|
Das mit dem String Verketten ist imo ned notwendig, zumindest bei mir gehts auch so:
"INSERT INTO galerie (ga_a_u_id, ga_name, ga_text, ga_anzeige) VALUES ('$ga_a_u_id', '$ga_name', '$ga_text', '$anzeige')" jo und was machst wennst a array insertn willst? dann wirds SO _nicht_ gehn da kommst um die punkte nicht umhin. ich ziehs vor, es lieber immer so zu machn, als einmal zu vergessn funktioniert auch so.
|
Rektal
Here to stay
|
Die punkte brauchst du nicht, du kannst ja { und } nehmen: $sql = "INSERT INTO foo(a,b) VALUES('{$array['index']}', '{$object->property}')";
Aber sauber ists sowieso ueber sprintf (imho): $sql = sprintf("INSERT INTO foo(a,b) VALUES('%s', '%s')",
$array['index'],
$object->property
);
Das ganze ist dann nicht so eine unverdaubare String-Wurscht. Bei Zahlen kommt auch ein gewisse Sicherheit mit, das kein String unabsichtlich reinrutscht $sql = sprintf("INSERT INTO foo(num) VALUE(%d)",
$kannAuchStringSeinTrotzdemKeinSQLError
);
Ums ueberpruefen der Werte kommt man aber eh' nie rum.
|
Facetious
Addicted
|
aber mit arrays gehts glaub ich auch "INSERT INTO tmp SET bla = 'result[nix]'"
also bei mir funkts halt immer lg Facetious
|
gue
Addicted
|
ist das: "blablabla $var[muh] schalalala"
eigentlich "korrekt"? ich mein es wird interprediert... aber das hat ja bekanntlich wenig zu bedeuten Es geht in den meisten Fällen so, wie du es dir wünschst, kann aber auch zu Problemen führen. Wird z.B. folgendes Codestück interpretiert: <?
define("MUH", "bla");
$arr = array("MUH" => "1", "bla" => "2");
echo "$arr[MUH] <br>";
echo $arr[MUH] . "<br>";
echo "${arr[MUH]} <br>";
echo "... ".$arr['MUH']. " ...";
?>
So ergibt sich folgende Ausgabe: 1
2
2
... 1 ...
Das hängt damit zusammen, dass PHP "Konstanten", die es nicht kennt, einfach zu Strings umwandelt, die den Namen der Konstanten enthalten. Ich würde also damit vorsichtig sein und es lieber "sauber" mit .$arr['MUH']. machen
|
dio
Here to stay
|
Die punkte brauchst du nicht, du kannst ja { und } nehmen:
$sql = "INSERT INTO foo(a,b) VALUES('{$array['index']}', '{$object->property}')";
Aber sauber ists sowieso ueber sprintf (imho):
$sql = sprintf("INSERT INTO foo(a,b) VALUES('%s', '%s')",
$array['index'],
$object->property
);
Das ganze ist dann nicht so eine unverdaubare String-Wurscht. Bei Zahlen kommt auch ein gewisse Sicherheit mit, das kein String unabsichtlich reinrutscht
$sql = sprintf("INSERT INTO foo(num) VALUE(%d)",
$kannAuchStringSeinTrotzdemKeinSQLError
);
Ums ueberpruefen der Werte kommt man aber eh' nie rum. ich pers. seh aber keine notwendigkeit sprintf oä zu verwenden, die schreibweise mit den { } war mir nicht bekannt, find sie aber nicht wirklich "ansprechend". mit . funktionierts fein, hab noch nie probleme damit ghabt und deshalb is es für mich "der richtige lösungsweg" .
|