webForumDet fria alternativet

Variabler i Insertsträngen

PHP

4 svar · 448 visningar · startad av chrotto

Medlem sedan juni 20106 inlägg
Frågan#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

Medlem 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.\');";

Medlem 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

Medlem sedan juni 20106 inlägg
#4

Lysande!
Funkar nu. Tackar ödmjukast!
/Christer

Medlem sedan aug. 20039 340 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')";
255 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)