Gå til innhold

Feilmelding i SQL spørring


Anbefalte innlegg

Hei! Jeg får en feilmelding når jeg kjører denne spørringen:

mysql_query("UPDATE nasking SET chance2 = (" . $chance[2] . " - " . $rand . ") WHERE id = " . $bruker_id) or die(mysql_error());

 

Feilmeldingen er:

 

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 ') WHERE id = 1' at line 1

 

Noen som vet hva feilen kan være og hvordan jeg kan fikse det?

 

Takker for svar :)

Lenke til kommentar
Videoannonse
Annonse

Hei! Jeg får en feilmelding når jeg kjører denne spørringen:

mysql_query("UPDATE nasking SET chance2 = (" . $chance[2] . " - " . $rand . ") WHERE id = " . $bruker_id) or die(mysql_error());

 

Prøv heller med..

 

mysql_query("UPDATE nasking SET chance2 = '" . $chance[2] . " - " . $rand . "'" WHERE id = ' . $bruker_id'") or die(mysql_error());

 

hmm...

 

mvh Vegard

Lenke til kommentar
I chance2 prøver jeg å sette inn et tall.

8420957[/snapback]

Da må du fjerne noen paranteser og hermetegnene ved siden av minusen i spørringen, for nå setter du inn noe slikt som: ( 8 - 3 )

Kanskje du kan prøve med:

mysql_query("UPDATE nasking SET chance2 = " . $chance[2] - $rand . " WHERE id = " . $bruker_id) or die(mysql_error());

 

Edit: Dette forutsetter at både $chance[2] og $rand er tall.

Endret av magicgunnar
Lenke til kommentar
Nei, magicgunnar... Da fikk jeg dene meldingen:

 

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 '0 WHERE id = 1' at line 1

8421541[/snapback]

prøv å print ut det du skal sette inn i spørringen din dvs hvis du bruker mitt forslag til spørring:

 

$query = "UPDATE nasking SET chance2 = " . $chance[2] - $rand . " WHERE id = " . $bruker_id;

print $query;

mysql_query($query);

 

Det vil være litt mer forklarende fordi resultatet avhenger av hva du har i $chance[2] og $rand, hvis de plutselig ikke er tall vil spørringen gå galt....

Post her hva som printes ut når du printer $query.

Lenke til kommentar

Er ikke sikker men det ser ut som om du bruker to tall slik som dette: chance2 = ( 8 - 3 ).

 

Jeg bruker mange ganger å gjøre f.eks chance2 = ( colnavn - 3 ) og det funker, men det er ikke sikkert det funker når du bruker to tall.

 

Men du kan jo gjøre det slik i steden, det blir jo akkurat det samme:

mysql_query("UPDATE nasking SET chance2 = " . ( $chance[2] - $rand) . " WHERE id = " . $bruker_id) or die(mysql_error());

Lenke til kommentar
Jeg bruker mange ganger å gjøre f.eks chance2 = ( colnavn - 3 ) og det funker, men det er ikke sikkert det funker når du bruker to tall.

8421689[/snapback]

Jeg må innrømme at jeg ikke har brukt denne syntaksen i sql før :blush: var nok litt kjapp da jeg svarte første gangen, det er sikkert dette han prøver å gjøre, og $chance[2] skal sikkert inneholde et kolonnenavn!

 

Rinox: prøv å skriv ut den opprinnelige spørringen din og post den her.

Lenke til kommentar

som sagt tideligere så kan du prøve å skrive ut sql strengen og se korleis den ser ut før du sender den til databasen.

 

Du må og hugse og ha ( og ) rundt ($chance[2] - $rand) slik:

 

PHP

<?php

mysql_query("UPDATE nasking SET chance2 = " . ($chance[2] - $rand) . 

WHERE id = " . $bruker_id) or die(mysql_error());

?>

 

edit: koden brutt opp av moderator :dremel: Den ble så lang at den ødela layouten på siden

Endret av macfjott
Lenke til kommentar

Okey, nå poster jeg hele scriptet mitt her:

 

Klikk for å se/fjerne innholdet nedenfor
<?php
ob_start();
include('config.php');

if(!$logged[username])
{
echo("Du er ikke innlogget!");
}

else{
$result = mysql_query('SELECT id FROM users WHERE username = '.quote_smart($logged['username'])); 
$resultObj = mysql_fetch_object($result);
$bruker_id = $resultObj->id;
/*
 Skjekker om skjema er utført
*/
$checkaccess = mysql_query("SELECT id FROM nasking WHERE id=$bruker_id");
$checkaccess= mysql_num_rows($checkaccess);
$pris = 500;

if ($checkaccess == 0) {
echo("Du kan ikke naske noe som helst ennå. Først må du kjøpe en maske for $pris mynter.<br><br>");
echo("<form action='?side=nasking&go=nasking&act=kjopMaske' method='post'><input type='submit' value='Kjøp maske'></form>");
}
else {
if(isset($_POST['submit'])) {
 $action = (isset($_POST['action']) && $_POST['action'] > 0 && $_POST['action'] <= 4 ) ? intval($_POST['action']) : 0;
 
 $resultObj = mysql_fetch_object(mysql_query('SELECT chance1, chance2, chance3, chance4 FROM nasking  WHERE id = ' . $bruker_id));
 
 /*
 	Legger handlingene i et array
 */
 $chance = array(1 => $resultObj->chance1, 
     2 => $resultObj->chance2, 
     3 => $resultObj->chance3, 
     4 => $resultObj->chance4
   	);
 $tall = rand(1, 3);
 if(rand(1, 100) > $chance[$action]) { 
 	$output = "Handling misslyktes!";
 	if ($chance[$action] >= 30) {
   mysql_query("UPDATE nasking SET chance" . $action . " = (" . $chance[$action] . " - " . $rand . ") WHERE id = " . $bruker_id) or die(mysql_error());
 	}
 } 
 else {
 	switch ($action) {
   case 1: 
   	$output = "Handling 1";
   	if ($chance[1] <= 80) {
     mysql_query("UPDATE nasking SET chance1 = (chance1 - " . $rand . ") WHERE id = " . $bruker_id) or die(mysql_error());
   	}
   break; 
 	
   case 2: 
   	$output = "Handling 2"; 
   	if ($chance[2] <= 80) {
     mysql_query("UPDATE nasking SET chance2 = (chance2 - " . $rand . ") WHERE id = " . $bruker_id) or die(mysql_error());
   	}
   break; 
 	
   case 3: 
   	$output = "Handling 3";
   	if ($chance[3] <= 80) {
     mysql_query("UPDATE nasking SET chance3 = (chance13 - " . $rand . ") WHERE id = " . $bruker_id) or die(mysql_error());
   	}
   break; 
 	
   case 4: 
   	$output = "Handling 4";
   	if ($chance[4] <= 80) {
     mysql_query("UPDATE nasking SET chance4 = (chance4 - " . $rand . ") WHERE id = " . $bruker_id) or die(mysql_error());
   	}
   break; 
 	} 
 }
echo $output;
}

else {
echo("<form action='' method='post'>
 <input type='radio' name='action' value='1'>Nask fra forbipasserende<br>
 <input type='radio' name='action' value='2'>Stjel fra salgsbod<br>
 <input type='radio' name='action' value='3'>Bryt deg inn i et hus<br>
 <input type='radio' name='action' value='4'>Overfall en adelsmann<br><br>
 <input type='submit' name='submit' value='Stjel'><br>
 </form>");
}
}

switch ($_GET[act]) {

case 'kjopMaske':
 
 $result = mysql_query('SELECT lommebok FROM users WHERE username = '.quote_smart($logged['username'])); 
 $resultObj = mysql_fetch_object($result);
 $lommebok = $resultObj->lommebok;
 
 if($lommebok < $pris) {
 	echo("<b>Du har ikke nok penger i lommeboken.</b>");
 }
 else {
 	mysql_query("UPDATE users SET lommebok = (lommebok - $pris) WHERE username = '$logged[username]'");
 	mysql_query("INSERT INTO nasking (id) VALUES ($bruker_id)") or die(mysql_error());
 	echo("<b>Du har betalt $pris mynter for en maske.</b>");
 }
 
break;

}
}
?>

 

edit: lang kodesnutt lagt i skjul

Endret av macfjott
Lenke til kommentar
Printet den ut nå. Dette fikk jeg:

 

UPDATE nasking SET chance2 = (chance2 - ) WHERE id = 1

8425873[/snapback]

Er ikke helt stø på akkurat den notasjonen du bruker, men hvis jeg har forstått FraXinuS riktig, så er den eneste feilen med spørringen din at det ikke er noen variabel i $rand, den er rett og slett ikke initialisert. Du kan jo selvfølgelig initialisere den ved å skrive dette før $rand blir brukt:

$rand =  rand(1, 100);

Da blir den et tilfeldig tall mellom 1 og 100, men om det er det du skal ha er en helt annen sak! Så da er spørsmålet: Hva prøver du å gjøre med den spørringen?

Lenke til kommentar
Med spørringen prøver jeg å legge til et tilfeldig tall mellom 1 og 3 der hvor 'id' er den samme som den innloggede brukerens... rand(1, 100) er til å regne en slags prosent.

8427891[/snapback]

Så hvis du putter inn:

$rand = rand(1, 3);

F.eks helt øverst i koden, iallfall før spørringen, så kan du kanskje få riktig resultat? Gitt at syntaksen funker.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...