jonne Medlem sedan jan. 2001 1 154 inlägg Trådstart 19 sep. 2001 11:26 #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?
S SPiN Medlem sedan mars 2000 7 896 inlägg 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(',', '&#44;', $str);
Eller ännu hellre, för att göra din kod säkrare:
$str = "Hej på er, alla glada";
$str = htmlentities($str);
jonne Medlem sedan jan. 2001 1 154 inlägg 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]
S SPiN Medlem sedan mars 2000 7 896 inlägg Tja, eftersom att det var det jag föreslog så borde det vara ett bra sätt
Men använd htmlentities() om du vill vara säker på att andra tecken konverteras till HTML-koden för tecknen...
jonne Medlem sedan jan. 2001 1 154 inlägg 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
S SPiN Medlem sedan mars 2000 7 896 inlägg Njäe, htmlentities() ersätter alla "konstiga" tecken med dess motsvarighet i HTML.
Alltså:
, blir ,
& blir &
" blir "e;
osv...
N nicclas Medlem sedan feb. 2000 1 050 inlägg Nä, htmlentities() ersätter inte ",".
(Slutsats: Insertfunktionen suger )
[Redigerat av nicclas den 19 sep 2001]
S SPiN Medlem sedan mars 2000 7 896 inlägg Gör den inte??
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...