php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.04.2005, 08:28  
Gast
 
Beiträge: n/a
Standard Verknüpfung: Delete und Select

Morgen,
ich habe folgenden PHP-Code:

PHP-Code:
<?php
MYSQL_QUERY
("DELETE FROM Chat WHERE ID <> (SELECT ID FROM Chat ORDER BY TIME ASC LIMIT 0,5);");
?>
Er sollte alle Datensätze, die älter sind, als die ersten 6, löschen.
Aber der macht gar nix

Wo is denn da der Fehler oder kann man das ganz anders machen?

Danke
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 30.04.2005, 08:53  
Erfahrener Benutzer
 
Registriert seit: 30.01.2005
Beiträge: 435
Jojo1
Standard

selecte doch schon vorher? o.O
Jojo1 ist offline  
Alt 30.04.2005, 09:00  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Verknüpfung: Delete und Select

Zitat:
Zitat von SebE
Er sollte alle Datensätze, die älter sind, als die ersten 6, löschen.
17.7. Wie lösche ich alle Datensätze, die älter als n Tage sind?
http://php-faq.de/q/q-mysql-loeschen.html

Grüße Ben.
imported_Ben ist offline  
Alt 30.04.2005, 09:46  
Gast
 
Beiträge: n/a
Standard

Danke erstma für die Antworten, aber ich will nicht alle Datensätze löschen die älter als n Tage sind, sondern ich wollte, dass immer nur 6 Datensätze in der Tabelle stehen und nicht mehr.

Alle die zuviel sind, sollen gelöscht werden.

Was ist denn an meiner Anweisung falsch?
 
Alt 30.04.2005, 09:54  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

1. das subselect könnte von deiner mysql-version nicht unterstützt werden
2. die abfrage ist eigentlich nicht eindeutig, d.h. es könnte sein, dass der query-parser das ganze nicht eindeutig bestimmen kann - mit jeder lösch-aktion könnte sich theoretisch das ergebnis des subselects ändern.
3. 'TIME' ist ein reserviertes wort in mysql
4. die fehlermeldung, die du mit mysql_error() zurückbekommst, hast du nicht gepostet.

PHP-Code:
<?php

$sql 
'SELECT id FROM tabelle ORDER BY `time` ASC LIMIT 0,5';
 ...

 
$ids = array();
while(
$res mysql_fetch_assoc($qry)) {
  
$ids[] = $res['id'];
}

$sql2 'DELETE FROM tabelle WHERE id NOT IN ('implode(','$ids).')';
?>
axo ist offline  
Alt 30.04.2005, 13:23  
Gast
 
Beiträge: n/a
Standard

Habs im Moment so:

PHP-Code:
<?php
$List 
= ARRAY();
  
$Res MYSQL_QUERY("SELECT ID FROM Chat ORDER BY TIME ASC LIMIT 0,5;");

  WHILE(
$Row MYSQL_FETCH_ROW($Res))
    {
    
$List[] = $Row[ID];
    }

  
MYSQL_QUERY("DELETE FROM Chat WHERE ID NOT IN (".IMPLODE(",",$List).");");
  
MYSQL_QUERY("INSERT INTO Chat (Name,Date,Time,Message) VALUES (\"".$Name."\",\"".$Date."\",\"".$TimeStamp."\",\"".$Message."\");") or die ("Daten konnten nicht an Datenbank gesendet werden.");
?>
Aber es geht immer noch nicht - bin ich zu dumm dafür?
 
Alt 30.04.2005, 13:28  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von SebE
Habs im Moment so:

PHP-Code:
<?php
$List 
= ARRAY();
  
$Res MYSQL_QUERY("SELECT ID FROM Chat ORDER BY TIME ASC LIMIT 0,5;");

  WHILE(
$Row MYSQL_FETCH_ROW($Res))
    {
    
$List[] = $Row[ID];
    }

  
MYSQL_QUERY("DELETE FROM Chat WHERE ID NOT IN (".IMPLODE(",",$List).");");
  
MYSQL_QUERY("INSERT INTO Chat (Name,Date,Time,Message) VALUES (\"".$Name."\",\"".$Date."\",\"".$TimeStamp."\",\"".$Message."\");") or die ("Daten konnten nicht an Datenbank gesendet werden.");
?>
Aber es geht immer noch nicht - bin ich zu dumm dafür?
mysql_error() posten ....
 
Alt 30.04.2005, 13:32  
Gast
 
Beiträge: n/a
Standard

Ich hab mal den Error hinter die DELETE-Abfrage ausführen lassen:

"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 ',,,)' at line 1"

Ich hoffe, ich hab's richtig gemacht!?
 
Alt 30.04.2005, 13:34  
Gast
 
Beiträge: n/a
Standard

2 Dinge:

a) Befehle wie implode sollten kleingeschrieben werden
b) Kopier mal das Query eine Zeile tiefer und schreib nen echo davor. Dann solltest du den Fehler sehen!
 
Alt 30.04.2005, 13:40  
Gast
 
Beiträge: n/a
Standard

So, wie ich das sehe, liegt der Fehler schon in der SELECT-Abfrage

Wenn ich $Res ausgeben lasse erhalte ich:
Resource id #5

Und für meine $List:
,,,,
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Kein Ergebnis bei SELECT (MySQL 4.1.9) dr.e. Datenbanken 4 15.06.2008 19:54
[Erledigt] Mysql Insert Select + Concat Hu5eL Datenbanken 14 10.06.2008 10:39
Javascript Select liste verdoppeln dsmcg HTML, Usability und Barrierefreiheit 8 19.10.2006 16:56
Parsen von Delimitern Basti Tutorials 0 30.09.2006 21:24
SELECT AS geht bei AVG net cyberholic Datenbanken 0 04.05.2006 09:43
Select zusammenfügen... chris3001 Datenbanken 15 27.04.2006 10:54
[JavaScript] Event Handler in form select - Syntax? winfo_cologne HTML, Usability und Barrierefreiheit 5 29.03.2006 16:47
SELECT um eine Bedingung erweitern ?! Datenbanken 2 22.10.2005 10:09
Probleme mit Inner Select Datenbanken 0 19.10.2005 15:22
selbst gelöst! Select <option> kleines Problem Dropdow 24bits PHP Tipps 2005-2 0 15.10.2005 19:19
[Erledigt] SELECT in SELECT PHP Tipps 2005 5 06.04.2005 22:30
[Erledigt] [gelöst] MySQL abfrage eingrenzen anhand einer SELECT Auswah Datenbanken 13 01.12.2004 18:42
[Erledigt] 2 mal select 1 form PHP-Fortgeschrittene 1 01.09.2004 20:13
selektierter wert in select box anzeigen PHP Tipps 2004 6 30.08.2004 13:49

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
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 \'delet from wort where id=\'5\'\' at line 1, select auf select verknüpfen, select und delete in einem php, mysql implode array verdoppelt, select mit select verknüpfen, php delete order by, select php löschen

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:24 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.