Duplicate entry ... for key 'PRIMARY'

Tags:    php mysqli

<< < 12 > >>
Jeg arbejder på en "godkend" funktion til et spil, hvor de skal kunne lave stamtræ, men den begynder at drille lidt. De tre funktioner der skal være er:
1) Update en status til at være on og ikke of.
2) Opret stamtræ med personens ID.
3) Træk 16 point fra brugeren.

Tingene går fint igennem, men den printer "Noget gik galt, så din person er ikke oprettet. Kontakt support hvis fejlen forsætter." ud, fremfor Personen er nu godkendt.

Fold kodeboks ind/udPHP kode 


Nogle der kan hjælpe :)?



Indlæg senest redigeret d. 14.01.2014 21:12 af Bruger #17534
14 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Måske der ikke skal '' omkring 16 ?

Har du også tjekket hvad hvad $result indeholder?



Zynzz:

Det begyndte bare at virke :)
Det eneste problem der er lige nu er at den printer "Noget gik galt, så din person er ikke oprettet. Kontakt support hvis fejlen forsætter." ud, fremfor "Personen er nu godkendt."



Ja den er jeg med på :)

Men det er pga. der er en fejl i dine queryes..

For hvis der ikke var fejl ville $result jo indeholde "true"..
http://dk1.php.net/mysqli_query


En anden ting er at du ikke udfører de rigtige queryes..
fx:
$result = mysqli_query($con, $query); hver linie skal ændres $query


Jeg ville også anbefale du evt., slog nogle af dine queryes sammen.






Indlæg senest redigeret d. 14.01.2014 21:41 af Bruger #7728
Arh. Jeg tror jeg har set hvor du vil hen ang. det :p!

Rettelse:

$id = $_GET[id];
$query = mysqli_query($con, "UPDATE persons SET persstatus = 'on' WHERE persID = '$_GET[id]'") or die(mysqli_error($con));
$result = mysqli_query($con, $query);
$query2 = mysqli_query($con, "INSERT INTO pedigree (pedID) VALUES ({$id})") or die(mysqli_error($con));
$result = mysqli_query($con, $query2);
$query3 = mysqli_query($con, "UPDATE members SET point = point - '16' WHERE userID = '" . $v2['userID'] ."'") or die(mysqli_error($con));
$result = mysqli_query($con, $query3);



Indlæg senest redigeret d. 14.01.2014 22:18 af Bruger #17534
Du henter på intet tidspunkt $query2 fx.

Så undre mig over, at der bliver ændret noget i databasen.. :)


Men prøv bare:

Fold kodeboks ind/udPHP kode 



Du kan jo sagtens lave en SELECT i din UPDATE funktion..






Indlæg senest redigeret d. 14.01.2014 22:19 af Bruger #7728
Nej. Det opdagede jeg også lige (Pinligt..) - men den gør det faktisk. Trækker fra og opretter osv. o.O Ret underligt...

Modtager nu beskeden:
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 '1' at line 1



Indlæg senest redigeret d. 14.01.2014 22:29 af Bruger #17534
hvilke tick er det du har sat om on ?? on er et reseveret ord

prøv med backtick i stedet for alm tick
eller allerbedst kald det noget andet end on





Hvorfor alle de queries?

Først mysqli_query() med en SQL og bagefter så en mysqli_query() med resultatet fra den første mysqli_query() det giver da kun fejl.

Fold kodeboks ind/udPHP kode 


SQL updates og inserts returnerer ikke noget dataset. Updates giver mulighed for brug af mysqli_affected_rows() og Inserts giver mulighed for brug af mysqli_insert_id()


"on" er et reserveret ord, men ikke når det indsættes i en tekststreng. Så i ovenstående er det fint at bruge "on". Men 1 og 0 er bedre at bruge for hhv. on og off, eller true og false



Indlæg senest redigeret d. 15.01.2014 11:00 af Bruger #10216
Har altid lært at man skal dele det op i flere, så det er derfor jeg har lavet alle de queries (: Jeg ved godt at on er et reserveret ord, og det er også meningen at det skal ændres til 1 og 2 - men dog virker det, så lige nu er det mere den anden fejlkode ting, jeg skal havefundet ud af. :)

Men selvom jeg gør som du siger (Michael) modtager jeg beskeden: "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 '1' at line 1"

Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 15.01.2014 13:17 af Bruger #17534
Du har fejl i dit insert statement. Alternativ må du stoppe scriptet lige efter hver query, så du kan identificere hvilken SQL der fejler.



<< < 12 > >>
t