Avatar billede langkiller Nybegynder
11. april 2010 - 22:17 Der er 17 kommentarer og
1 løsning

Hvordan bruger man replace funktionen ? Forum Nyt emne Følg ikke med <<1>>

Har et problem med replace funktionen.. Har prøvet stort set alt (synes jeg selv og endte med en meget lang sql sætning som heller ikke fungere. Vil have de variabler, som kommer fra en html form på en side, til at erstatte de allerede eksisterende felter "brugernavn" og "erhverv" i databasen..


session_start();

mysql_connect("","","");
mysql_select_db("");

$brugernavn = $_POST["brugernavn"];
$erhverv = $_POST["erhverv"];


$errorCount = 0;

$userQuery = mysql_query("SELECT * FROM brugere WHERE id='$_SESSION[user_id]'");
$userArray = mysql_fetch_array($userQuery);




if($errorCount == 0)
{
  $password = MD5($password);
  $insert = mysql_query("UPDATE brugere SET brugernavn,erhverv = REPLACE(brugernavn, '" . userArray[brugernavn] . "', '$brugernavn') AND(erhverv, '" . userArray[erhverv] . "', '$erhverv') WHERE id='$_SESSION[user_id]')");
 
  if(!$insert)
    echo "Der opstod en fejl. <a href=\"java script:history.back(-1)\">Prøv igen</a><br>";
  else
    echo "Dine oplysninger er blevet ændret <a href=\"index.php\">Forside</a><br>";
}

Håber nogen kan hjælpe :D
Avatar billede arne_v Ekspert
11. april 2010 - 22:33 #1
Det er ikke:

UPDATE t SET f1,f2 = REPLACE(f1,noget) AND (f2,noget) WHERE ...

men:

UPDATE t SET f1 = REPLACE(f1,noget), f2 = (f2,noget) WHERE ...
Avatar billede langkiller Nybegynder
11. april 2010 - 22:42 #2
Det vil altså sige at sætningen kommer til at se sådan her ud?

$insert = mysql_query("UPDATE brugere SET brugernavn = REPLACE('brugernavn','$brugernavn'), erhverv = ('erhverv','$erhverv') WHERE id='$_SESSION[user_id]')");

Den udskriver stadig min fejlsætning og er derfor ikke blevet sendt til databasen.
Avatar billede arne_v Ekspert
11. april 2010 - 22:51 #3
Prøv med:

if(!$insert)
    echo "Der opstod en fejl. <a href=\"java script:history.back(-1)\">Prøv igen</a><br>" . mysql_error();
  else
    echo "Dine oplysninger er blevet ændret <a href=\"index.php\">Forside</a><br>";
}

og se hvilken fejl du får.
Avatar billede langkiller Nybegynder
11. april 2010 - 23:00 #4
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 '), erhverv = ('erhverv',' ') WHERE id='6')' at line 1
Avatar billede arne_v Ekspert
11. april 2010 - 23:01 #5
Det er mig som er en skovl.

Syntaxen skal ikke være:

UPDATE t SET f1 = REPLACE(f1,noget), f2 = (f2,noget) WHERE ...

men:

UPDATE t SET f1 = REPLACE(f1,noget), f2 = REPLACE(f2,noget) WHERE ...
Avatar billede langkiller Nybegynder
11. april 2010 - 23:41 #6
ahaa :) jeg prøver det lige af
Avatar billede langkiller Nybegynder
11. april 2010 - 23:44 #7
Arrrhh får stadig følgende:

Der opstod en fejl. Prøv igen
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 '), erhverv = REPLACE('erhverv','Erhvervsdrivende') WHERE id='6' 


Jeg har ikke misforstået noget her vel?

UPDATE brugere SET brugernavn = REPLACE('brugernavn','$brugernavn'), erhverv = REPLACE('erhverv','$erhverv') WHERE id='$_SESSION[user_id]')
Avatar billede arne_v Ekspert
11. april 2010 - 23:51 #8
Nej som jeg roder rundt.

REPLACE tager jo 3 argumenter.

REPLACE(input, 'det der skal væk', 'det der skal ind i.s.f.')
Avatar billede langkiller Nybegynder
11. april 2010 - 23:58 #9
Hvad vil input sige ?
Avatar billede langkiller Nybegynder
12. april 2010 - 00:01 #10
Er lidt forvirret over hvordan den skal se ud helt præcis.. dette virker i hvert fald ikke:

UPDATE brugere SET brugernavn = REPLACE('brugernavn', 'brugernavn','$brugernavn'), erhverv = REPLACE('erhverv', 'erhverv','$erhverv') WHERE id='$_SESSION[user_id]')
Avatar billede arne_v Ekspert
12. april 2010 - 00:31 #11
Hvis vi nu hopper tilbage til dit oprindelige spørgsmål:

$insert = mysql_query("UPDATE brugere SET brugernavn=REPLACE(brugernavn, '" . userArray[brugernavn] . "', '$brugernavn'),erhverv = REPLACE(erhverv, '" . userArray[erhverv] . "', '$erhverv') WHERE id='" . $_SESSION['user_id'] . "')");
Avatar billede langkiller Nybegynder
12. april 2010 - 00:38 #12
Den kan ikke så godt lide de [ ]
får fejlmeddelsen
Parse error: parse error, unexpected '[' on line 110
Avatar billede arne_v Ekspert
12. april 2010 - 00:42 #13
Jeg ved jo ikke hvad du vil erstatte.

Men måske:

$insert = mysql_query("UPDATE brugere SET brugernavn=REPLACE(brugernavn, '" . $userArray['brugernavn'] . "', '$brugernavn'),erhverv = REPLACE(erhverv, '" . $userArray['erhverv'] . "', '$erhverv') WHERE id='" . $_SESSION['user_id'] . "')");

Hvad indeholder userArray?
Avatar billede langkiller Nybegynder
12. april 2010 - 00:48 #14
neej heller ikke :(
får denne igen:
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 ')' at line 1


$userArray = mysql_fetch_array($userQuery);

og

  $userQuery = mysql_query("SELECT * FROM brugere WHERE id='$_SESSION[user_id]'");
Avatar billede langkiller Nybegynder
12. april 2010 - 00:49 #15
Og det er bare noget tekst (VARCHAR) i databasen der skal erstattes..
Avatar billede arne_v Ekspert
12. april 2010 - 00:53 #16
Prøv og konstruer din SQL streng først og udskriv den inden du forsøger at udføre den.

Så er det nemmere at se hvor det går galt.
Avatar billede langkiller Nybegynder
12. april 2010 - 20:38 #17
Du havde givet mig det rigtige svar :) fandt ud af at jeg havde sat en parantes for meget til sidst så det fungerer upåklageligt nu. jeg siger tak for hjælpen. ;)
Avatar billede arne_v Ekspert
12. april 2010 - 20:48 #18
saa smider jeg et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester