Avatar billede 17196 Nybegynder
06. oktober 2005 - 06:24 Der er 17 kommentarer og
1 løsning

problemer med DELETE

Hver gang en bruger går ind og ser i film, sætter jeg en række ind i databasen. For ikke at have 300000 rækker, vil jeg gerne slette dem der er ældre end den der sidst blev indsat.
Jeg er ude i noget i den her stil, men det kører ikkee rigtig:

//login?

if($_COOKIE['loged'] == 'yes') {
    if($_COOKIE['user_level'] =='0' || $_COOKIE['user_level'] =='1' || $_COOKIE['user_level'] =='2' || $_COOKIE['user_level'] =='3') {

//indsæt
   
$add =mysql_query("INSERT INTO film_view (view_ID,film_ID,author_VIEW)". "VALUES ('NULL','$data[id_film]','$_COOKIE[username]')");

//vælg sidst indsatte!

$valg = mysql_query("SELECT * FROM film_view WHERE(film_ID='$data[id_film]' && author_VIEW='$_COOKIE[username]') ORDER BY view_ID DESC LIMIT 1") or die(mysql_error());
while($valget = mysql_fetch_array($valg)){

//slet

$slet =mysql_query("DELETE * FROM film_view WHERE(film_ID='$data[id_film]' && author_VIEW='$_COOKIE[username]' && datotid < '$valget[datotid]')") or die(mysql_error());
}}}

Desværre så virker slet ikke! Får denne fejl meddelelse:
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 '* FROM film_view WHERE(film_ID='55' && author_VIEW='Lars' && datotid < '2005-10-' at line 1

Nogen der kan hjælpe mig?
Avatar billede nielle Nybegynder
06. oktober 2005 - 07:08 #1
Hvornår bliver dit felt, datotid, sat til nohget? Det ser i hvert fald ikke ud til at ske i din INSERT-sætning.
Avatar billede 17196 Nybegynder
06. oktober 2005 - 07:15 #2
der bruger jeg TIMESTAMP funktionen! Så tiden er sat i db'en!
Avatar billede nielle Nybegynder
06. oktober 2005 - 07:32 #3
Har du kigget efter at den står der som den skal? Når der skreuves:

... '2005-10-' ...

- i din SQL, så ser det da ud til at der er noget galt der.
Avatar billede nielle Nybegynder
06. oktober 2005 - 07:38 #4
Hvis du kun vil have en række i din tabel - hvorfor sletter du så ikke bare alt det eksisterende før at du indsætter den nye række?
Avatar billede 17196 Nybegynder
06. oktober 2005 - 08:07 #5
Haha! Det kan der være noget om :D Det er vist for tidligt.
Du har ret i at det ser ud somom der er en fejl når datotid hentes! Dog er den rigtig når jeg udskriver den!
Nogen der kan forklare dato tid fejlen?
Nå men problem solved anyways!
Tak for hjælpen!
Avatar billede nielle Nybegynder
06. oktober 2005 - 08:13 #6
Jeg kan ikke forklare datofejlen, men prøv at udskrive din SQL-sætning før at du forsøger at udføre den:

$sql = "DELETE * FROM film_view WHERE(film_ID='$data[id_film]' && author_VIEW='$_COOKIE[username]' && datotid < '$valget[datotid]')";
echo "DEBUG: " . $sql . "<br>";
$slet = mysql_query($sql) or die(mysql_error());

... og et svar :^)
Avatar billede 17196 Nybegynder
06. oktober 2005 - 08:19 #7
Så bliver det sådan, men får stadig samme fejl!

$sql = "DELETE * FROM film_view WHERE(film_ID='$data[id_film]' && author_VIEW='$_COOKIE[username]')";
echo "DEBUG: " . $sql . "<br>";
$slet = mysql_query($sql) or die(mysql_error());

Fejl:
DEBUG: DELETE * FROM film_view WHERE(film_ID='57' && author_VIEW='Lars')
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 '* FROM film_view WHERE(film_ID='57' && author_VIEW='Lars')' at line 1
Avatar billede nielle Nybegynder
06. oktober 2005 - 08:56 #8
Hvad skete der med datodelen?

... && datotid < '$valget[datotid]')";
Avatar billede nielle Nybegynder
06. oktober 2005 - 08:57 #9
$sql = "DELETE FROM film_view WHERE film_ID='$data[id_film]' AND author_VIEW='$_COOKIE[username]'";
Avatar billede showsource Seniormester
06. oktober 2005 - 08:59 #10
eller
$sql = "DELETE * FROM film_view WHERE film_ID='$data[id_film]' & author_VIEW='$_COOKIE[username]'";
Avatar billede 17196 Nybegynder
06. oktober 2005 - 09:08 #11
Samme fejl!
Kan det være fordi der er underscore _ i tabellen?
Avatar billede showsource Seniormester
06. oktober 2005 - 09:17 #12
næh, eller jeg har før brugt _ i tabelnavn

$sql = "DELETE * FROM `film_view` WHERE `film_ID` = ". intval($data["id_film"]) ." AND `author_VIEW` = '". $_COOKIE["username"] ."'";
Avatar billede nielle Nybegynder
06. oktober 2005 - 09:17 #13
Der skal ikke være * i en DELETE.
Avatar billede showsource Seniormester
06. oktober 2005 - 09:18 #14
ahh, der skal jo ik' være * i query! :O)
Avatar billede showsource Seniormester
06. oktober 2005 - 09:19 #15
Nåh, det var bemærket! :O)
Avatar billede 17196 Nybegynder
06. oktober 2005 - 09:22 #16
tror sgu det var det underscore!
Måske fordi jeg har en tabel der hedder film_komentar også! Sjov det kun er et problem når man skal slette derfra!!
Nå men nu virker det 100! Synes også det var lidt under hvis man ikke kunne bruge AND i en DELETE sætning.
Mange tak for hjælpen. Det er MONSTER! :D
Smid svar
Avatar billede nielle Nybegynder
06. oktober 2005 - 09:25 #17
Svar :^)
Avatar billede nielle Nybegynder
06. oktober 2005 - 09:25 #18
...
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