Avatar billede S-Larsen Nybegynder
11. september 2009 - 20:44 Der er 26 kommentarer og
1 løsning

Kan ikke opdatere mysql_query("UPDATE.....

Hej

Jeg er stødt ind i et problem, jeg kan ikke længer opdatere i min database. - Eller det vil sige det kan jeg godt :S.

Jeg har fornylig skiftet fra Surftown, hjem til min egen server. Og har så taget backup af MySQL fra Surftown og lagt ind på min MySQL.

Alle de data som er flyttet fra Surftown, kan jeg ikke ændre. De nye ting som jeg har oprettet på MySQL, kan jeg godt opdatere S: !!!

Hva går der galt her?

if($_POST['ret'] && !empty($_GET['id'])){
  $id = $_GET['id'];
  mysql_query("UPDATE $gaestebog SET picxl = '$_POST[picxl]', pic = '$_POST[pic]', intro = '$_POST[intro]', text = '$_POST[text]' WHERE id = '$id';");
Avatar billede showsource Seniormester
11. september 2009 - 20:45 #1
Den bruger og password du connecter med.
Avatar billede S-Larsen Nybegynder
11. september 2009 - 20:46 #2
Den har fuld adgang til at ændre data i MySQL.
Avatar billede showsource Seniormester
11. september 2009 - 20:47 #3
Hvis ellers du selvf. har husket at connecte, inden query :O)

Og du kan jo altid smide en or die (mysql_error()) på slutningen af din query !
Avatar billede S-Larsen Nybegynder
11. september 2009 - 20:48 #4
Der er connected.

Jeg kan jo også godt skrive ændringer til de nyeste indlæg jeg har lavet :S
Avatar billede showsource Seniormester
11. september 2009 - 20:49 #5
mysql_query("UPDATE $gaestebog SET picxl = '$_POST[picxl]', pic = '$_POST[pic]', intro = '$_POST[intro]', text = '$_POST[text]' WHERE id = '$id';") or die (mysql_error());
Avatar billede showsource Seniormester
11. september 2009 - 20:50 #6
Og ellers, hvor defineres $gaestebog ?
Avatar billede S-Larsen Nybegynder
11. september 2009 - 20:52 #7
Den bliver defineret i db.php

$gaestebog = 'history';


admin-rediger.php - Filen som bruges til at ændre med

require("db.php");

------

Men igen, kan godt ændre i det indhold som jeg har lavet på min MySQL, men ikke fra den gamle fra Surftown :S
Avatar billede S-Larsen Nybegynder
11. september 2009 - 20:57 #8
Jeg har lige prøvet at sætte

or die (mysql_error());  ind i php filen:


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


....

Ændre jeg i mit nye indhold, kommer der ingen fejl :S
(Samme database, samme tabel.)
Avatar billede showsource Seniormester
11. september 2009 - 20:57 #9
Har du lagt indhold fra surftown ind på den lokale som root bruger ?
Og hvordan har du lagt ind på localhost ?
Avatar billede S-Larsen Nybegynder
11. september 2009 - 21:00 #10
Jeg har brugt DUMP funktionen i phpmyadmin (Surftown's) og så har jeg brugt phpmyadmin på min pc, til at impotere..
Avatar billede S-Larsen Nybegynder
11. september 2009 - 21:01 #11
Og ja, phpmyadmin logger på som ROOT på Localhost
Avatar billede showsource Seniormester
11. september 2009 - 21:01 #12
mysql_query("UPDATE $gaestebog SET picxl = '$_POST[picxl]', pic = '$_POST[pic]', intro = '$_POST[intro]', text = '$_POST[text]' WHERE id = '$id'") or die (mysql_error());

eller, ( text mener jeg er et reserveret ord i mysql )

$sql = "UPDATE ".$gaestebog." SET picxl = '".$_POST["picxl"]."', pic = '".$_POST["pic"]."', intro = '".$_POST["intro"]."', `text` = '".$_POST["text"]."' WHERE id = '".$id."'") or die (mysql_error());

$query = mysql_query($sql) or die (mysql_error());
Avatar billede erikjacobsen Ekspert
11. september 2009 - 21:04 #13
Hvor kommer $id fra ?
Avatar billede S-Larsen Nybegynder
11. september 2009 - 21:07 #14
$query = mysql_query("SELECT * FROM $gaestebog WHERE id = '$row2';");


Id, bruges til at opdatere en ønskede linie i databasen..
Avatar billede S-Larsen Nybegynder
11. september 2009 - 21:08 #15
$sql = "UPDATE ".$gaestebog." SET picxl = '".$_POST["picxl"]."', pic = '".$_POST["pic"]."', intro = '".$_POST["intro"]."', `text` = '".$_POST["text"]."' WHERE id = '".$id."'") or die (mysql_error());

$query = mysql_query($sql) or die (mysql_error());


-----

Parse error: parse error in C:\wamp\www\admin-rediger.php on line 49
Avatar billede S-Larsen Nybegynder
11. september 2009 - 21:28 #16
Har lige fundet frem til, at PHPmyADMIN står med en fejl:

http://wiki.phpmyadmin.net/pma/FAQ_3.11
Avatar billede erikjacobsen Ekspert
11. september 2009 - 21:43 #17
Men hvor kommer værdien i $id fra i den SQL-sætning du bruger i fx #8 ?
Avatar billede showsource Seniormester
11. september 2009 - 21:50 #18
Well, $id kommer fra starten af vist kode. ( $id = $_GET['id'];

Prøver lige igen:

$sql = "UPDATE ".$gaestebog." SET picxl = '".$_POST["picxl"]."', pic = '".$_POST["pic"]."', intro = '".$_POST["intro"]."', `text` = '".$_POST["text"]."' WHERE id = '".$id."'";

$query = mysql_query($sql) or die (mysql_error());
Avatar billede S-Larsen Nybegynder
11. september 2009 - 22:01 #19
Nej, det er det samme..

Men jeg har kigget lidt i min SQL  backup fil. Og fundet frem til, at når jeg bruger tegnet ' , så går det galt fx:

IBM's første pc.
Sletter jeg så ' , så der står IBM's første pc og henter SQL filen ind på ny, så jeg kan ændre den ENE linie. Men næste gang at der kommet et ' , så nej :S!!!

I SQL filen står der '' = som bliver vist som ' , når det bliver udskrevet via PHP.
Avatar billede erikjacobsen Ekspert
11. september 2009 - 22:01 #20
Ok ;) Men er der en værdi i den. Fejlbeskeden i #8 kunnne tyde på der ikke er nogen værdi.
Avatar billede S-Larsen Nybegynder
11. september 2009 - 22:15 #21
Jo id, bliver tildelt en værdi, som den skal. Det var det første jeg tjekkede.
Men har nået så langt nu, at det kun er når tegnene --> ' 
indgår i teksten, at jeg ikke kan få lov at ændre.
Avatar billede erikjacobsen Ekspert
11. september 2009 - 23:20 #22
Sådan skal det jo være. Hvad står der i SQL-strengen når det går galt (bare lige for at være sikker på du har et problem).

Og løsningen kan være at bruge http://php.net/mysqli -funktionerne med "parameters"
Avatar billede S-Larsen Nybegynder
13. september 2009 - 10:56 #23
Fandt selv løsningen:

$ch = mysql_real_escape_string($_POST["text"]);

$sql = "UPDATE ".$gaestebog." SET picxl = '".$_POST["picxl"]."', pic = '".$_POST["pic"]."', intro = '".$_POST["intro"]."', `text` = '".$ch."' WHERE id = '".$id."'";

$query = mysql_query($sql) or die (mysql_error());
Avatar billede S-Larsen Nybegynder
13. september 2009 - 11:01 #24
...
Avatar billede arne_v Ekspert
05. februar 2011 - 21:51 #25
Du ved godt at der er et sikkerheds hul i størrelsesordenen af en 8 sporet motorvej i den kode?
Avatar billede S-Larsen Nybegynder
06. februar 2011 - 15:47 #26
Ikke sådanne lige??? :S
Avatar billede arne_v Ekspert
13. februar 2011 - 00:54 #27
Du escaper ikke alt til den SQL.
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