Just nu i M3-nätverket
Gå till innehåll

MySQL, antal försök = antal försök + 1 (fungerar inte!)


Niss3

Rekommendera Poster

Hej!

 

Felet:

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=1+1 WHERE idtry='101'' at line 1

Koden:

$triesx = mysqli_query($opendb, "UPDATE try SET $levelx=$levelx+$levelt  WHERE idtry='$idx'")
or die(mysqli_error($opendb));
Jag försöker göra en räknare som håller reda på antal försök en person gjort. Tyvärr så förstår jag inte varför jag inte kan uppdatera räknaren som jag vill..
 
Tabellens namn är "try" och räknarna heter 1 och 2 för att det ska vara lätt för mig att lägga till flera räknare i min php kod. Är det MySQL knasar för att jag döpt raderna till 1 och 2??
 
508ef0596b.png
 
var_dump($idx); ger string(3) "101"
då användarens id är 101.
 
var_dump($levelt); ger int(1) 
då det är level 1.

 

Från början försökte jag med;

$triesx = mysqli_query($opendb, "UPDATE `try` SET `$levelx` = `$levelx`+1 WHERE `id` = $idx")

Det gav precis samma felmeddelande. Därför provade jag att använda lite olika variabler, och ibland siffror. Men inget jag provat har gjort något annorlunda.

 

Om ni kan hjälpa mig vore det väldigt uppskattat!

Tack så mycket!

Med vänliga hälsningar,

Simon Nilsson

Länk till kommentar
Dela på andra webbplatser

Döp om fältnamnen  så att det går att utläsa vad de betyder.

 

Bygg olika kontroller/metoder som räknar upp/ner i fältet separat istället för att skicka in fältnamnen i queryn, är min rekommendation.

UPDATE `try` SET `logins` = `logins` + 1 WHERE `idtry` = $idx
Länk till kommentar
Dela på andra webbplatser

 

Döp om fältnamnen  så att det går att utläsa vad de betyder.

 

Bygg olika kontroller/metoder som räknar upp/ner i fältet separat istället för att skicka in fältnamnen i queryn, är min rekommendation.

UPDATE `try` SET `logins` = `logins` + 1 WHERE `idtry` = $idx

 

Hej Jonas!

 

Eftersom jag vill ha antal försök på varje nivå tror jag att jag måste använda en variabel efter SET (istället för "logins").

 

Jag har en variabel som heter $levelx, den kommer ha ett värde mellan 1 och 10.

 

Om jag nu gör om tabellen så att raderna heter levelONE levelTWO levelTHREE och så vidare (istället för 1, 2 ,3),

hur hade du då gjort för att konvertera $levelx till motsvarande radnamn i try tabellen?

 

Det första som slår mig är att göra en lååååång if-sats som kollar varje nummer 1 och 1 för att sedan definiera variabeln $"logins"...

 

-edit-

 

Vad tror du om att döpa om raderna till level1, level2, level3 osv och sedan använda $levelnamn som definieras som $levelnamn = level + string[$levelx] om det nu går att göra så?

 

Eller tror du det går att göra om $levelnamn till en array så att jag kallar på $levelnamn[$levelx] och har lagrat alla radnamnen i $levelnamn?

t.ex. $levelnamn[]=(levelone, leveltwo, levelthree) och så vidare.

UPDATE `try` SET `$levelnamn[$levelx]` = `$levelnamn[$levelx]` + 1 WHERE `idtry` = $idx

Eller om jag tar det ett steg till och lägger in det i en variabel innan;

@LVLname = $levelnamn[$levelx];
Länk till kommentar
Dela på andra webbplatser

$levelt = array(zero, one, two, three);

$levelz = $levelt[$levelx];

 

$triesx = mysqli_query($opendb, "UPDATE try SET $levelz = $levelz+1  WHERE idtry='$idx'")

or die(mysqli_error($opendb));

Länk till kommentar
Dela på andra webbplatser

  • 2 veckor senare...

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...