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';");
11. september 2009 - 20:45
#1
Den bruger og password du connecter med.
11. september 2009 - 20:46
#2
Den har fuld adgang til at ændre data i MySQL.
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 !
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
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());
11. september 2009 - 20:50
#6
Og ellers, hvor defineres $gaestebog ?
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
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.)
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 ?
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..
11. september 2009 - 21:01
#11
Og ja, phpmyadmin logger på som ROOT på Localhost
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());
11. september 2009 - 21:04
#13
Hvor kommer $id fra ?
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..
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
11. september 2009 - 21:43
#17
Men hvor kommer værdien i $id fra i den SQL-sætning du bruger i fx #8 ?
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());
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.
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.
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.
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"
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());
13. september 2009 - 11:01
#24
...
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?
06. februar 2011 - 15:47
#26
Ikke sådanne lige??? :S
13. februar 2011 - 00:54
#27
Du escaper ikke alt til den SQL.
Computerworld tilbyder specialiserede kurser i database-management