webForumDet fria alternativet

Komma problem

7 svar · 167 visningar · startad av jonne

jonneMedlem sedan jan. 20011 097 inlägg
#1

Använder en insertfunktion som ursprungligen kommer från phpportalen.net. Ser ut på fäljande sätt

function Insert($TBL, $FIELDS, $DATA) {
		$arr = explode(", ", $DATA);
		$resultat = implode("', '", $arr);
		$resultat = "'$resultat'";

		@mysql_query("INSERT INTO $TBL ($FIELDS) VALUES($resultat)")
			or die("Felaktig SQL-syntax!<br> <br>" . mysql_error() . "<br><br>" .$FIELDS. "<br>" .$DATA);
		$this->rows = @mysql_affected_rows();

		return true;
	}

Används på följande sätt:

$DB->Insert(
	"imgSources",  //Tabellnamn
	"imgsrcAgencyName, imgsrcDescription", //Kolumner i dbn
	"$ffAgency, $ffDesc" //Formfält
 	);

Problemet är nu att om jag i ffDesc har en text som ser ut såhär:
Hej på er, alla glada

så kommer ju ett fel att genereras eftersom texten innehåller komma->mellanslag.

Hur ska jag göra för att smidigast komma förbi detta?

------------------
Varför får inte jag köra småsten när Tommy Körberg?

[Redigerat av jonne den 19 sep 2001]

SPiNMedlem sedan mars 20005 832 inlägg
#2

Eftersom att det är jag som skrivit klassen så borde ju jag veta... ;)

Byt ut alla dina kommatecken i strängarna mot ,.

$str = "Hej på er, alla glada";
$str = str_replace(',', '&amp#44;', $str);

Eller ännu hellre, för att göra din kod säkrare:

$str = "Hej på er, alla glada";
$str = htmlentities($str);

------------------
SPiN, bjorne.w@telia.com

-- They pretend to pay me, I pretend to work --

[Redigerat av SPiN den 19 sep 2001]

jonneMedlem sedan jan. 20011 097 inlägg
#3

Undrar om jag förstod det där :)
Löste det iaf med att byta ut kommat mot & #44;

$str = "$ffDesc";
$str = str_replace(',', '& #44;', $str);

Bra sätt?

[r] *suck* [/r]
------------------
Varför får inte jag köra småsten när Tommy Körberg?

[Redigerat av jonne den 19 sep 2001]

[Redigerat av jonne den 19 sep 2001]

SPiNMedlem sedan mars 20005 832 inlägg
#4

Tja, eftersom att det var det jag föreslog så borde det vara ett bra sätt :e

Men använd htmlentities() om du vill vara säker på att andra tecken konverteras till HTML-koden för tecknen...

------------------
SPiN, bjorne.w@telia.com

-- They pretend to pay me, I pretend to work --

jonneMedlem sedan jan. 20011 097 inlägg
#5

Hmm.. konfunderad. Om jag använder htmlentities så kommer jag ju endå inte förbi detta problemet med att funktionen tolkar komma->mellanslag som att det ska vara ett nytt formfält. Eller :q

------------------
Varför får inte jag köra småsten när Tommy Körberg?

SPiNMedlem sedan mars 20005 832 inlägg
#6

Njäe, htmlentities() ersätter alla "konstiga" tecken med dess motsvarighet i HTML.

Alltså:
, blir ,
& blir &
" blir &quote;
osv...

------------------
SPiN, bjorne.w@telia.com

-- They pretend to pay me, I pretend to work --

nicclasMedlem sedan feb. 20001 061 inlägg
#7

Nä, htmlentities() ersätter inte ",".

(Slutsats: Insertfunktionen suger ;) )

[Redigerat av nicclas den 19 sep 2001]

SPiNMedlem sedan mars 20005 832 inlägg
#8

Gör den inte?? :o

Hmm... Jag trodde starkt på att den ersatte alla "konstiga" tecken... Aja, man kan juh använda str_replace().

Min funktion suger inte! Den känns bara lite överflödig, eftersom att den inte gör det lättare att lägga in information i databasen... :e

------------------
SPiN, bjorne.w@telia.com

-- They pretend to pay me, I pretend to work --

[Redigerat av SPiN den 19 sep 2001]

Genererad på 374 ms · cache AV · v20260730165559-full.f96bc7eb