Avatar billede backfire Nybegynder
30. november 2004 - 11:28 Der er 7 kommentarer og
1 løsning

Problemer med UPDATE sætning

Jeg har følgende sætning:
"UPDATE pollAnswers SET Score = (Score + 1) WHERE PollAnswersID = 5"

Når den fyres af i PHPMyAdmin eller direkte på en kommandolinje, virker alt perfekt, men når jeg forsøger at afvikle den via mit PHP kode i en mysql_query() så får jeg besked om at der er fejl i min sætning nær det første tegn. Jeg er selvfølgelig 100% sikker på at det er den samme sætning jeg bruger begge steder og alt er dobbelttjekket. Det kan også nævnes at brugeren har fuld adgang til hele databasen, og at andre lignende update sætninger fungerer perfekt, dog på andre tabeller i databsen.

Nogen der har en ide om hvad det kan skyldes, eller idéer til hvor jeg skal lede efter fejl???
Avatar billede erikjacobsen Ekspert
30. november 2004 - 12:13 #1
Jeg har ingen ideer før jeg ser din kode ;)
Avatar billede majkat Nybegynder
30. november 2004 - 12:59 #2
få php til at skrive din query ud lige inden kaldet til mysql_query.
Avatar billede backfire Nybegynder
30. november 2004 - 13:50 #3
Majkat -> Jeg får min PHP til at printe den SQL sætning som melder fejl, og mystisk nok kan jeg paste den ind på min kommando linje og eksekvere den uden problemer, det er altså kun når den afvikles igennem mysql_query() at den giver problemer...

ericjacobsen -> Jeg tvivler på at det er i koden problemet ligger, da den er så ligetil som noget, men følgende kan jeg ikke få til at virke:

Denne funktion kaldes:
function placeAnswer($intAnswerID)
{
  $strSQL = "UPDATE pollAnswers SET Score = (Score + 1) WHERE PollAnswersID = " . $intAnswerID;

  $this->insertData($strSQL);
}

og funktionen insertData fra klassen databasse der er arvet af den funktion som ovenstående klasse ligger i ser ud som følger:

  function insertData($strSQL)
  {
    print("Indhold af strSQL: " . $strSQL . "<br>");
    mysql_query($strSQL) or die(mysql_error());
  }

og fejlen der meldes er:

Indhold af strSQL: UPDATE pollAnswers SET Score = (Score + 1) WHERE PollAnswersID = 1
You have an error in your SQL syntax near '' at line 1

og det er sætningen: "UPDATE pollAnswers SET Score = (Score + 1) WHERE PollAnswersID = 1" som jeg uden problemer kan eksekvere via PHPMyAdmin eller en kommandolinje
Avatar billede erikjacobsen Ekspert
30. november 2004 - 14:04 #4
Mon ikke det er i koden. Det kan jo ikke være andre steder ;)  Prøv lige den her:

    mysql_query($strSQL) or die("Fra insertData: ".mysql_error());
Avatar billede backfire Nybegynder
30. november 2004 - 14:14 #5
Fundet... Kald mig gerne en idiot der har brugt 3 timer på et tåbeligt problem...

Fejlen ligger i (spot selv fejlen :-) ):

  function selectData($strSQL)
  {
    $result = mysql_query($strSQL) or die(mysql_error());;
    return $result;
  }

en funktion der efter at have inkrementeret counteren henter det nye resultat, og det var den der meldte fejl, jeg have bare stirret mig blind på at det skulle være opdateringsfunktionen der meldte fejl, men EJ bragte mig på rette spor, så smid bare et svar...
Avatar billede backfire Nybegynder
30. november 2004 - 14:17 #6
Sorry, fejlen kan i nok ikke spotte, men det er altså i den funktion at funktionen lå...
Avatar billede erikjacobsen Ekspert
30. november 2004 - 14:17 #7
;) Nej tak, jeg samler slet ikke på point. Det er ganske fornøjeligt som det er.
Avatar billede backfire Nybegynder
30. november 2004 - 15:02 #8
Jamen ok da... så må vi vi jo håber jeg kan hjælpe dig en anden dag :-)
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

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