Avatar billede well_r Nybegynder
14. juli 2001 - 21:54 Der er 41 kommentarer og
4 løsninger

Syntaks fejl?

Hey allesammen
Har i det godt på denne lørdag ..ehm..aften? :)
Jeg har været i vanskligheder i et lille stykke tid.. så jeg tog .. eksperten.dk som en sidste udvej ;o)

Jeg får denne fejl

You have an error in your SQL syntax near \'ORDER BY id ASC LIMIT 0,36\' at line 1

og tjaa.. den ser sådan her ud.. ->
mysql_query(\"DELETE from chatlines_\".$userinfo[nick].\" ORDER BY id ASC LIMIT 0,\".$linier_skal_slettes.\"\") or die (mysql_error());

Nogen der kan hjælpe? :(

ps. Giv mig venligst ikke links til tidligere spm.. HVIS der er.. bare prøv at besvare.....
takker på forhånd :)
Avatar billede sunlock.dk Nybegynder
14. juli 2001 - 21:57 #1
du skal bruge \' i stedet for \"

::sunlock.dk::
Avatar billede htx98i17 Professor
14. juli 2001 - 21:58 #2
du kan ikke have tonsvis \" i din query,

$tabel = \"chatlines_\".$userinfo[nick];

mysql_query(\"DELETE from $tabel ORDER BY id ASC LIMIT 0,$linier_skal_slettes \") or die (mysql_error());
Avatar billede sunlock.dk Nybegynder
14. juli 2001 - 21:58 #3
mysql_query(\"DELETE from chatlines_\'.$userinfo[nick].\' ORDER BY id ASC LIMIT 0,\'.$linier_skal_slettes.\'\") or die (mysql_error());

Ellers misforståer den det andet \" i din sætning og kan ikke finde ud af hvad der sker ved 3. \"....

Altid 2x \' omkring en varchar i MySQL...

::sunlock.dk::
Avatar billede wizprod.com Nybegynder
14. juli 2001 - 21:58 #4
hihi, tjaa mere er der vist ikke at sige :-)
Avatar billede ianj Nybegynder
14. juli 2001 - 22:01 #5
Eller brug gpc_magic_quotes

/Ian - ADVICE A/S
Avatar billede wizprod.com Nybegynder
14. juli 2001 - 22:05 #6
Avatar billede ianj Nybegynder
14. juli 2001 - 22:07 #7
Og kan man ikke lide det, må man bare bruge et voksent sprog, nemlig perl, i mod_perl.

For bruger man DBI, har man lækkert nok placeholders.

/Ian - ADVICE A/S
Avatar billede wizprod.com Nybegynder
14. juli 2001 - 22:11 #8
hmmm ian.... du bliver nok lige nød til at skære det foregående ud i pap, for det er vist de færreste der forstår det du lige skrev!
Avatar billede well_r Nybegynder
14. juli 2001 - 22:14 #9
virker ENDNU intet :(
Avatar billede htx98i17 Professor
14. juli 2001 - 22:16 #10
well_r -> hmm post lige det du har prøvet, jeg kan ikke lige se hvad der skulle være galt i mit eksempel...
Avatar billede sunlock.dk Nybegynder
14. juli 2001 - 22:16 #11
Hvad har du skrevet....???

::sunlock.dk::
Avatar billede sunlock.dk Nybegynder
14. juli 2001 - 22:17 #12
htx98i17 <<<

Stor kamp om 10 point *S*
Desværre bliver vinderen nok well_r

::sunlock.dk::
Avatar billede well_r Nybegynder
14. juli 2001 - 22:18 #13
mysql_query(\"DELETE from chatlines_\'.$userinfo[nick].\' ORDER BY id ASC LIMIT 0,\'.$linier_skal_slettes.\'\") or die (mysql_error());
Avatar billede well_r Nybegynder
14. juli 2001 - 22:20 #14
                $tabel = \"chatlines_\".$userinfo[nick];

            mysql_query(\"DELETE from $tabel ORDER BY id ASC LIMIT 0,$linier_skal_slettes \") or die (mysql_error());


Virker HELLER ikke :(
Avatar billede sunlock.dk Nybegynder
14. juli 2001 - 22:20 #15
prøv lige og fjern LIMIT 0
Avatar billede well_r Nybegynder
14. juli 2001 - 22:28 #16
You have an error in your SQL syntax near \'ORDER BY id ASC\' at line 1
Avatar billede htx98i17 Professor
14. juli 2001 - 22:28 #17
hvad siger fejlen ???
Avatar billede htx98i17 Professor
14. juli 2001 - 22:29 #18
er der overhovedet et felt der hedder id ?
Avatar billede well_r Nybegynder
14. juli 2001 - 22:30 #19
Sunlock..skal jeg forøge point?
Avatar billede well_r Nybegynder
14. juli 2001 - 22:30 #20
CREATE TABLE Chatlines_Testeren (
  id int(10) unsigned DEFAULT \'0\' NOT NULL auto_increment,
  from_nick varchar(20) NOT NULL,
  from_color varchar(6) NOT NULL,
  to_nick varchar(20) NOT NULL,
  to_color varchar(6) NOT NULL,
  text varchar(225) NOT NULL,
  ip varchar(20) DEFAULT \'255.255.255.255\' NOT NULL,
  Login datetime,
  userid int(5) DEFAULT \'0\' NOT NULL,
  tid timestamp(14),
  PRIMARY KEY (id)
);


Det er tabellen
Avatar billede erikjacobsen Ekspert
14. juli 2001 - 22:31 #21
Der må ikke være en order by i en DELETE, og heller ikke en LIMIT. Hvad er det
du prøver på?
Avatar billede sunlock.dk Nybegynder
14. juli 2001 - 22:32 #22
Points??? Tja, det er jo en dejlig aften *S* Nej, det var en (dårlig???) joke -hehe
Avatar billede well_r Nybegynder
14. juli 2001 - 22:33 #23
Erik..tjaa..jeg vil have fjernet alle de poster der er ældre end de 20 sidste.... hvis du forstår?
Avatar billede htx98i17 Professor
14. juli 2001 - 22:34 #24
han vil vel slette en række af de ældste ID\'er
Avatar billede sunlock.dk Nybegynder
14. juli 2001 - 22:34 #25
hvorfor laver du så ikke en forløkke som fjerne dem en efter en??? og så kører den igennem 20 gange????
Avatar billede htx98i17 Professor
14. juli 2001 - 22:35 #26
sunlock, nok fordi det ville være smartest at gøre det i mysql, hvis det kan lade sig gøre...
Avatar billede htx98i17 Professor
14. juli 2001 - 22:39 #27
kan man ikke bruge noget ala
DELETE FROM tabel WHERE MIN(id)....
uden at vide noget om MIN og MAX....
Avatar billede well_r Nybegynder
14. juli 2001 - 22:40 #28
HTX.. går nok ikke.. for ID forøges jo hele tiden.. hver gang der kommer ny post..og på den måde kommer man jo til at få nye id\'er..
men vent.. jeg har en idé
Avatar billede well_r Nybegynder
14. juli 2001 - 22:40 #29
idé følger:
Avatar billede well_r Nybegynder
14. juli 2001 - 22:42 #30
mon man kan lave sådan her:
$res = mysql_query(\"Select * from chatlines_$userinfo[nick] order by id limit 0,$linier_skal_slettes\")
while($row = mysql_fetch_array($res)){
  mysql_query(\"Delete from chatlines_$userinfo[nick] where id=\'$row[id]\'\");
}

Burde dette ikke gøre det?
Avatar billede htx98i17 Professor
14. juli 2001 - 22:43 #31
så find ud af hvad den mindste ID er inden du køre din delete query...

og så:
DELETE FROM tabel WHERE MIN(id)<$minid+20
Avatar billede well_r Nybegynder
14. juli 2001 - 22:45 #32
Htx.. jeg fatter for at være ærlig ikke den der min(id)... er \"min\" en funktion eller hva???????????????
Avatar billede erikjacobsen Ekspert
14. juli 2001 - 22:47 #33
Ja, det kan man, men overvældende effektivt kan man jo ikke sige det er.
Du er bedre tjent med

  mysql_query(\"select max(id) from chatlines_$useinfo[nick]\");

tag nummeret ud i $max og

  $max-=20;
  mysql_query(\"delete from chatlines_$userinfo[nick] where id between 1 and $max\") or die(mysql_query());
Avatar billede htx98i17 Professor
14. juli 2001 - 22:48 #34
ja MIN og MAX...

$query = mysql_query(\"SELECT MIN(id) AS minid FROM tabel\");

mysql_query(\"DELETE FROM tabel WHERE MIN(id)<$minid+20 \");

eller noget lign....
Avatar billede well_r Nybegynder
14. juli 2001 - 22:51 #35
function SkrivAlle_mysql($id,$text)
    {
        $userinfo = FindUserInfo($id);
        $res = mysql_query(\"SELECT * FROM session\");
        while ($row = mysql_fetch_array($res)) {
            mysql_query(\"INSERT INTO chatlines_\".$row[nick].\" (from_nick,from_color,to_color,text,ip,userid)
                    VALUES(\'$userinfo[nick]\',\'$userinfo[namecolor]\',\'$userinfo[color]\',\'$text\',\'$userinfo[ip]\',\'$userinfo[userid]\')\") or die (mysql_error());
            $chatres = mysql_query(\"SELECT * from chatlines_\".$userinfo[nick].\"\") or die (mysql_error());
            $tal = mysql_num_rows($chatres) or die (mysql_error());
            if ($tal > 20){
                $linier_skal_slettes = $tal - 20;

$res = mysql_query(\"Select * from chatlines_$userinfo[nick] order by id limit 0,$linier_skal_slettes\");
while($row = mysql_fetch_array($res)){
mysql_query(\"Delete from chatlines_$userinfo[nick] where id=\'$row[id]\'\");
}
                mysql_query(\"DELETE from chatlines_\'$userinfo[nick]\' ORDER BY id ASC LIMIT 0,\'$linier_skal_slettes\'\") or die (mysql_error());
            }
        }
    }   
Avatar billede well_r Nybegynder
14. juli 2001 - 22:51 #36
Det er hvad jeg har nu.. Erik/HTX.. kan en af jer ikke være sød at sætte den ind.. er ikke helt med hvordan det skal sættes sammen?
Avatar billede htx98i17 Professor
14. juli 2001 - 22:53 #37
EJ -> be my guest :-)
Avatar billede well_r Nybegynder
14. juli 2001 - 22:55 #38
Hovsa..skrev en fejl.. den der linie:
mysql_query(\"DELETE from chatlines_\'$userinfo[nick]\' ORDER BY id ASC LIMIT 0,\'$linier_skal_slettes\'\") or die (mysql_error());

skal ikke være der!
Avatar billede erikjacobsen Ekspert
14. juli 2001 - 22:55 #39
gider ikke :(
Avatar billede well_r Nybegynder
14. juli 2001 - 22:56 #40
Det jeg selv lavede..virker vist fint..tjek det på.. http://www.Rachid.dk/MiniCom2.0/minicom.php3
Avatar billede well_r Nybegynder
14. juli 2001 - 22:56 #41
hehe..gør ikke ngoet
Avatar billede htx98i17 Professor
14. juli 2001 - 22:59 #42
uden at have lavet det før ville jeg mene at følgende fungere:

mysql_query(\"SELECT MIN(id) AS minid FROM tabel(DELETE FROM tabel WHERE MIN(id)<minid+20 \"));
Avatar billede well_r Nybegynder
14. juli 2001 - 22:59 #43
HVAD F**K er
Got error 127 from table handler
Avatar billede htx98i17 Professor
14. juli 2001 - 23:00 #44
hvis altså man lige flytter det sidste \" en tak ...
Avatar billede htx98i17 Professor
14. juli 2001 - 23:27 #45
hmm, bare glem det jeg foreslog... :-)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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