Hej Stig
Du bør escape alt input til din mysqldatabase for at undgå mysqlinjection.
Mit gæt er, at de to sider kører på hvert sit webhotel. På det ene
webhotel er magic quotes :
<
http://dk.php.net/manual/da/function.get-magic-quotes-gpc.php> slået
til og på det andet ikke
Magic quotes sørger for at alt, der kommer ind via get og post til dit
script, bliver escapet, hvorfor du uden problemer kan opdatere din mysql
på det ene webhotel, hvor det er slået til, mens du har problemer på det
andet.
Når man escaper sætter man \ foran det tegn man escaper. eksempelvis
'dette er TDC\'s kabel'.
Når du smider indhold i en database bør du anvende
mysql_real_escape_string() :
<
http://dk2.php.net/manual/da/function.mysql-real-escape-string.php> -
bemærk noten om magic quotes i forbindelse med mysql_real_escape_string
Mvh Christian
Stig Sørensen wrote:
> Hej gruppe.
>
> Jeg er ved at tabe alt håret og må be om hjælp.
>
> Jeg har en fungerende side, hvor jeg kan ændre noget tekst i et
> textarea (fra en mySQL database) og uanset hvormange double-quotes/
> single-quotes jeg skriver i dette textarea, så bliver det succesfuldt
> SQL UPDATE til mySQL databasen igen, uden fejl (og vises fint når dét
> skal gøres.)
>
>
> Nu er jeg så i gang med en anden side, og er igang med præcist det
> samme. Ændre tekst i et textarea (indhold fra mySQL Database) med ved
> ulige single-quote i textarea (og submit) kommer der fejl:
>
> "Error: You have an error in your SQL syntax; check the manual that
> corresponds to your MySQL server version for the right syntax to use
> near '1203802330', make_id='2' WHERE id = '213'' at line 1"
>
> For mig ser de helt ens ud funktionsmæssigt, så kan ikke se hvorfor
> det fejler ved textarea #2 og ikke ved #1.
>
>
>
> Textarea #1> (kun relateret kode er gengivet)
>
>
> $navn = $_POST['navn'];
> $email = $_POST['email'];
> $link = $_POST['link'];
> $titel = $_POST['titel'];
> $beskrivelse = $_POST['beskrivelse'];
> $formsent = $_POST['formsent'];
> $id = $_POST['id'];
>
>
> if ($formsent == "1") {
>
> $sql_updatee = "UPDATE slk_partnerlinks.toplist SET titel='$titel',
> beskrivelse='$beskrivelse', link='$link', navn='$navn', email='$email'
> WHERE id = '$id'";
> if (!mysql_query($sql_updatee))
> {
> die('Error: ' . mysql_error());
> }
>
>
> [SNIP]
>
> <p>Beskrivelse:<br /><textarea name='beskrivelse' rows='4' cols='40'
> tabindex='1'>".$row['beskrivelse']."</textarea></p>
>
>
> $_POST['beskrivelse'] bliver ikke kørt gennem htmlentities eller
> ligende på noget tidspunkt.
>
>
>
>
> Textarea #2>
>
> $utid = time();
> $comments = $_POST['comments'];
> $made_year = $_POST['made_year'];
> $mileage = $_POST['mileage'];
> $price = $_POST['price'];
> $make_id = $_POST['make'];
> $id = $_GET['id'];
>
> $sql_update = "UPDATE slk_billigscooter.phpbb_garage SET made_year
> ='$made_year', mileage ='$mileage', price ='$price',
> comments='$comments', date_updated ='$utid', make_id='$make_id' WHERE
> id = '$id'";
> if (!mysql_query($sql_update))
> {
> die('Error: ' . mysql_error());
> }
>
>
> [SNIP]
>
> <p style='formtext'>Beskrivelse: $msg_beskrivelse<br /></p><textarea
> name='comments' rows='24' cols='100' tabindex='1'>".
> $row['comments']."</textarea><br />\n
>
> $_POST['comments'] bliver ikke kørt gennem htmlentities eller ligende.
> Ved denne textarea, ved Submit af et ulige single-quote i textarea
> kommer mySQL fejlen.
> Hvorfor når den ikke kommer ved den anden textarea?
> Eller er det umulig at sige uden hele koden foran sig?
>
> - Ingen andre fejl, hvis jeg undgår ulige single-quotes så bliver
> indholdet i textareaet korrekt SQL UPDATE til databasen.