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. 2007446 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. 2005953 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. 20039 342 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')";
139 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)