Avatar billede zombien Juniormester
27. august 2008 - 13:09 Der er 21 kommentarer og
1 løsning

problemer med sql string

jeg er igang med at få grå hår over denne streng
og jeg kan simplethen ikke finde fejlen

set mail_unread = conn.execute("select count(*) as unread from bruger_msg where modtager = '"&Zombien&"' and read = 'nej'")

fejlbesked:
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
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 'read = nej' at line 1
/4-play.dk/files/loggetind.asp, line 134


Keysersoze where are you :P
Avatar billede fennec Nybegynder
27. august 2008 - 13:14 #1
Er read et bool felt?? For så er det nok:
read=1

Kan også være et reserveret ord, så der skal ´ omkring:
and ´read´ = 'nej'
Avatar billede zombien Juniormester
27. august 2008 - 13:16 #2
har rettet read til isitopen

og får nu følgende fejl :S
Fejltype:
Response-objekt, ASP 0185 (0x8002000E)
En standardegenskab for objektet blev ikke fundet.
/4-play.dk/default.asp
Avatar billede mcgoat Nybegynder
27. august 2008 - 13:19 #3
hvilken type i DB er isitopen?
Avatar billede zombien Juniormester
27. august 2008 - 13:20 #4
isitopen er int
Avatar billede zombien Juniormester
27. august 2008 - 13:20 #5
har rettet det fra nej/ja til 1/0
Avatar billede mcgoat Nybegynder
27. august 2008 - 13:23 #6
virker det ikke nu så?
Avatar billede zombien Juniormester
27. august 2008 - 13:23 #7
nej den kommer stadig med den fejl omkring standardegenskab
Avatar billede fennec Nybegynder
27. august 2008 - 13:26 #8
Hvordan ser hele sql'en ud hvis du udskriver den til skærmen?
Avatar billede zombien Juniormester
27. august 2008 - 13:29 #9
jamen, nu snakker du om at udskrive :D
sådan som jeg har bygget min sql op, er den jo lidt besværlig sådan bare at udskrive, men hvis jeg fjerner "and isitopen = 1" så kan den sagten's køre strengen igennem :S

men så får den bare ikke talt det som den skal, nemlig ulæste breve :(
Avatar billede mcgoat Nybegynder
27. august 2008 - 13:40 #10
prøv at echo strengen istedet for at execute den, og så kopier den herind
Avatar billede mcgoat Nybegynder
27. august 2008 - 13:41 #11
måske sammen med opbygningen af din DB (typer)
Avatar billede zombien Juniormester
27. august 2008 - 13:47 #12
echo strengen??? der tabte du mig godt nok lidt :P
for det er jo ligefrem php, men kan da godt vise hvordan tabellen bruger_msg ser ud i databasen

Primært index - ID - Unique
ID - int(11) - Nej - <auto_increment>
Afsender - Varchar(20) - Ja
Modtager - Varchar(20) - Ja
Emne - Varchar(50) - Ja
Dato - Varchar(20) - Ja
Beskeden - Text - Ja
isitopen - int(3) - Ja - 1
Avatar billede zombien Juniormester
27. august 2008 - 13:48 #13
forstår bare ikke hvorfor den ikke kan li "and isitopen = 1"
Avatar billede fennec Nybegynder
27. august 2008 - 13:51 #14
Hvilke værdier kan isitopen antage?? Er NULL en af dem??

Tænker her på at jeg har oplevet problemer med count() og ligende funktioner. Resultat kan være en hel tom række, så hvis du prøver at udskrive mail_unread("unread"), så får du en fejl.
Avatar billede zombien Juniormester
27. august 2008 - 13:55 #15
isitopen får standard værdien 1 når der bliver oprettet en post, og resten af felterne i tabellen bruger_msg har også indhold :S
Avatar billede fennec Nybegynder
27. august 2008 - 14:08 #16
Så der er altså mindst en række som passer på kriteriet:
modtager = '"&Zombien&"' and isitopen =1

Prøv lige at lave en response.end lige efter du eksikvere sql'en... Bare så vi er helt sikker på at det ikke er en efterfølgende kode der fejler.
Avatar billede mcgoat Nybegynder
27. august 2008 - 14:08 #17
echo strengen=

myString = "select count(*) as unread from bruger_msg where modtager = '"&Zombien&"' and isitoppen = 1"

document.write myString


noget i den dur, er vant til PHP
Avatar billede mcgoat Nybegynder
27. august 2008 - 14:16 #18
hvad indeholder variablen Zombien ?? hvis det da er en variabel og ikke bare et navn, for hvis det er så er det jo ret simpelt :)
Avatar billede zombien Juniormester
27. august 2008 - 14:25 #19
jamen den indeholder i dette tilfælde faktisk ordet Zombien :P
da det afhænger hvilken bruger man er logget på med, men ingen brugernavne kan indeholde special tegn kun a-z og 0-9
Avatar billede zombien Juniormester
27. august 2008 - 14:59 #20
okay, nu blev jeg simpelthen så træt af den sql streng, at jeg omprogrammerede hele skidtet :P men jeg smider lige den løsning jeg fandt frem til, i tilfælde af andre skulle få problemer :D

set maildb = conn.execute("select * from bruger_msg where modtager = '"&userinfo("brugernavn")&"'")
           
if maildb.eof = false then
  unread = 0
  allmails = 0

  do until maildb.eof
      if maildb("isitopen") = 1 then
        unread = unread + 1
        allmails = allmails + 1
      elseif maildb("isitopen") = 0 then
        allmails = allmails + 1
      end if
  maildb.movenext
  loop
end if

nok ikke den mest optimale, men den virker da
Avatar billede mcgoat Nybegynder
28. august 2008 - 11:13 #21
hehe, bare det virker :-)
Avatar billede zombien Juniormester
30. september 2008 - 13:03 #22
lukker den her lige :D
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
Kurser inden for grundlæggende programmering

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