php Insert into problem - Seite 2

Seite 2 von 2 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/php_insert_into_problem_117118/page_2 - zur Vollversion wechseln!


Römi schrieb am 15.06.2004 um 00:21

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 schrieb am 15.06.2004 um 00:24

ja klar gehts auch so. ist aber ned schön und bei arrays ungut zu handlen


mat schrieb am 15.06.2004 um 00:30

Zitat
bei arrays ungut zu handlen
y?


semteX schrieb am 15.06.2004 um 00:42

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 schrieb am 15.06.2004 um 00:44

klar, deshalb kann mans auch nicht verallgemeinern.

wollt nur wissen ob ich etwas nicht geschnallt hab :)


semteX schrieb am 15.06.2004 um 00:46

ist das: "blablabla $var[muh] schalalala"

eigentlich "korrekt"? ich mein es wird interprediert... aber das hat ja bekanntlich wenig zu bedeuten


mat schrieb am 15.06.2004 um 01:19

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 schrieb am 15.06.2004 um 07:46

Zitat von Römi
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 schrieb am 15.06.2004 um 11:39

Die punkte brauchst du nicht, du kannst ja { und } nehmen:

Code: PHP
$sql = "INSERT INTO foo(a,b) VALUES('{$array['index']}', '{$object->property}')";
Aber sauber ists sowieso ueber sprintf (imho):
Code: PHP
$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
Code: PHP
$sql = sprintf("INSERT INTO foo(num) VALUE(%d)",
  $kannAuchStringSeinTrotzdemKeinSQLError
);
Ums ueberpruefen der Werte kommt man aber eh' nie rum.


Facetious schrieb am 15.06.2004 um 12:28

aber mit arrays gehts glaub ich auch

Code: PHP
"INSERT INTO tmp SET bla = 'result[nix]'"

also bei mir funkts halt immer

lg Facetious


gue schrieb am 15.06.2004 um 14:38

Zitat von semteX
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:
Code:
<?
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:
Code:
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 schrieb am 15.06.2004 um 14:45

Zitat von Rektal
Die punkte brauchst du nicht, du kannst ja { und } nehmen:

Code: PHP
$sql = "INSERT INTO foo(a,b) VALUES('{$array['index']}', '{$object->property}')";
Aber sauber ists sowieso ueber sprintf (imho):
Code: PHP
$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
Code: PHP
$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" :).




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025