webForumDet fria alternativet

Variabler i Insertsträngen

4 svar · 448 visningar · startad av chrotto

chrottoMedlem sedan juni 20106 inlägg
#1

Fixar inte att få in mina variabelvärden i MySql-databasen.
Syntaxen för att lägga in textsträngar är:
$sql = 'INSERT INTO `kontakt` (`fnamn`, `enamn`) VALUES (\'Olle\', \'Olsson\');';
mysql_query($sql,$con);
Det funkar ju men det skiter sig när jag vill lägga in värdena från mina variabler istället.
Borde ju vara så här:
$sql = 'INSERT INTO `kontakt` (`fnamn`, `enamn`) VALUES ($fnamn, $enamn);';
mysql_query($sql,$con);

Men icke...
Hur gör man??
/Christer

rhdfMedlem sedan okt. 2007447 inlägg
#2

jag antar att dina variabler inte innehåller "fnuttarna" ?
således bör det bli nånting i stil med
$sql = "INSERT INTO `kontakt` (`fnamn`, `enamn`) VALUES (\' .$fnamn.\',\' .$enamn.\');";

metalboyMedlem sedan jan. 2005870 inlägg
#3

För att variabelsubstitution ska fungera i en sträng måste strängen omges av citationstecken istället för apostrofer (sk heredoc-syntax fungerar också).

Ex:

$sql = "INSERT INTO `kontakt` (`fnamn`, `enamn`) VALUES ('$fnamn', '$enamn')";

Läs mer här:
http://se.php.net/manual/en/language.types.string.php

chrottoMedlem sedan juni 20106 inlägg
#4

Lysande!
Funkar nu. Tackar ödmjukast!
/Christer

nitro2k01Medlem sedan aug. 20037 630 inlägg
#5

Glöm inte att escape:a alla data med mysql_real_escape_string innan du stoppar in dem! Inga undantag! Inte ens om du verkligen tror att datat är ett nummer. (Om du inte har validerat värdet till ett nummer på serversidan, vill säga.)

 $fnamnsafe = mysql_real_escape_string($fnamn);
 $enamnsafe = mysql_real_escape_string($enamn);

 $sql = "INSERT INTO `kontakt` (`fnamn`, `enamn`) VALUES ('$fnamnsafe', '$enamnsafe')";
Genererad på 372 ms · cache AV · v20260730165559-full.f96bc7eb