Avatar billede fri-hash Nybegynder
06. juni 2002 - 15:54 Der er 15 kommentarer og
1 løsning

mærkelig syntaxfejl

jeg får syntaksfejl på en dynamisk skabt SQL-query, som kaldes med følgende :

$lokalres = mysql_query($lokalquery) or die(mysql_error() . $lokalquery);

dvs. jeg udskriver sql-error'en samt den query der udføres

jeg får følgende (for mig uforståelige) fejl:

You have an error in your SQL syntax near ') AND (MedlemID=3044)' at line 1 SELECT Tillidspost, ForeningNr FROM foreningmedlem WHERE (ForeningNr=224 OR ForeningNr=577) AND (MedlemID=3044)


jeg må have stirret mig fuldstændig blind på det, for sql'en ser fin ud i mine øjne??
Avatar billede ztyxx Nybegynder
06. juni 2002 - 15:58 #1
hvad sker der hvis du fjerner . $lokalquery fra
) or die(mysql_error() . $lokalquery);
Avatar billede ztyxx Nybegynder
06. juni 2002 - 16:01 #2
hvordan ser koden iøvrigt ud i sin helhed (altså din SELECT som den melder fejl på)
Avatar billede fri-hash Nybegynder
06. juni 2002 - 16:12 #3
ja, hvis jeg fjerner $lokalquery, så får jeg kun skrevet sql-error'en ud
(You have an error in your SQL syntax near ') AND (MedlemID=3044)' at line 1)


queryen dannes således:
$lokalquery = "SELECT Tillidspost, ForeningNr FROM foreningmedlem WHERE (";
for($i=0; $i<sizeof($ses_forening)-1; $i++) {
    $lokalquery .= "ForeningNr=$ses_forening[$i] OR ";
}
$lokalquery .= "ForeningNr=$ses_forening[$i]) AND (MedlemID=$ses_medlemID)";
Avatar billede ztyxx Nybegynder
06. juni 2002 - 16:17 #4
mangler du ikke en ) i
$lokalquery .= "ForeningNr=$ses_forening[$i] OR ";
efter $ses_forening[$i]
Avatar billede ztyxx Nybegynder
06. juni 2002 - 16:19 #5
måske sådan

$lokalquery = "SELECT Tillidspost, ForeningNr FROM foreningmedlem WHERE (";
for($i=0; $i<sizeof($ses_forening)-1; $i++) {
    $lokalquery .= "ForeningNr=$ses_forening[$i]\") OR ";
}
$lokalquery .= "(\"ForeningNr=$ses_forening[$i]) AND (MedlemID=$ses_medlemID\")";
Avatar billede fri-hash Nybegynder
06. juni 2002 - 16:20 #6
nejnej, den kommer i
$lokalquery .= "ForeningNr=$ses_forening[$i]) AND (MedlemID=$ses_medlemID)";

men den query jeg skrev i spørgsmålet er sådan som den ser ud når den forsøges eksekveret - scriptet virker fint i alle andre tilfælde
Avatar billede ztyxx Nybegynder
06. juni 2002 - 16:26 #7
det må være sådan som den er delt, mon ikke det er nogle " der skal escapes, og måske parantessætningen det findes i
Avatar billede ztyxx Nybegynder
06. juni 2002 - 16:30 #8
måske er det helt hen i vejret når man ikke helt kender til opbygningen, måske ikke...

$lokalquery = "SELECT Tillidspost, ForeningNr FROM foreningmedlem WHERE (";
for($i=0; $i<sizeof($ses_forening)-1; $i++) {
    $lokalquery .= "\"ForeningNr=$ses_forening[$i]\" OR ";
}
$lokalquery .= "\"ForeningNr=$ses_forening[$i]\") AND (\"MedlemID=$ses_medlemID\")";
Avatar billede fri-hash Nybegynder
06. juni 2002 - 16:54 #9
der vil aldrig skulle være " om hele betingelsen, højst om værdien hvis kolonnen er en teksttype, men kolonnen er en taltype, så der skal ikke plinger om - og som sagt virker scriptet med andre værdier,

lad vær at tænk så meget på koden, for hvis du som sagt kigger i mit spørgsmål, så kan du se hvordan queryen rent faktisk ser ud når den fejler
Avatar billede ztyxx Nybegynder
06. juni 2002 - 17:06 #10
oki, men vil det så sige at du gerne vil have den til at se sådan ud, uden din for løkke??
Avatar billede ztyxx Nybegynder
06. juni 2002 - 17:09 #11
øh glemte lige

$lokalquery = "SELECT Tillidspost, ForeningNr FROM foreningmedlem WHERE ($lokalquery.=ForeningNr=$ses_forening[$i]) OR ($lokalquery .= ForeningNr=$ses_forening[$i]) AND (MedlemID=$ses_medlemID)";


hvis det er, så må det skulle se sådan ud

$lokalquery = "SELECT Tillidspost, ForeningNr FROM foreningmedlem WHERE (";
for($i=0; $i<sizeof($ses_forening)-1; $i++) {
    $lokalquery .= "ForeningNr=$ses_forening[$i]) OR (";
}
$lokalquery .= "ForeningNr=$ses_forening[$i]) AND (MedlemID=$ses_medlemID)";

da det er et par parenteser der ikke er lukkede
Avatar billede fri-hash Nybegynder
06. juni 2002 - 17:12 #12
nej der er ikke !!! KIG DIG PÅ DEN QUERY DER ER I SPØRGSMÅLET

SELECT Tillidspost, ForeningNr FROM foreningmedlem WHERE (ForeningNr=224 OR ForeningNr=577) AND (MedlemID=3044)

sådan ser queryen ud og det jeg spørger om er om der er nogen der kunne se et eller andet i DENNE query som jeg har overset for i mine øjne ser den korrekt ud
Avatar billede fri-hash Nybegynder
06. juni 2002 - 17:14 #13
lukker dette spørgsmål da jeg ikke tror der er nogen der gider læse alt dette irrelevante phpsnak igennem
Avatar billede ztyxx Nybegynder
06. juni 2002 - 20:21 #14
rolig nu, din capslock sidder fast, prøvede bare efter bedste evne at hjælpe, godt nok er jeg ikke haj, men prøve kan man da altid
Avatar billede fri-hash Nybegynder
06. juni 2002 - 21:13 #15
det var heller ikke sådan ment, jeg mente bare at jeg havde gjort det tydeligt at jeg spurgte hvorfor jeg får syntaksfejl på en korrekt statement
Avatar billede ztyxx Nybegynder
07. juni 2002 - 11:01 #16
oki, men umiddelbart ser SQL statement, som du selv siger, korrekt ud, så prøv at oprette samme spm i PHP istedet, da der måske er en anden måde at gøre det på, som ikke vil give fejl
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
Kategori
Computerworld tilbyder specialiserede kurser i database-management

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