php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #16 (permalink)  
Alt 08-12-2008, 13:01
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Sorry, ich bin tatsächlich von Zahlen ausgegangen. Mit Buchstaben und Zahlen gehts natürlich.

Zitat:
Für einen Dateinamen. Natürlich kann ich die fortlaufend nummerieren aber dann kann ja jeder rumschnüffeln und man kann sofort sehen wievieles Uploads schon erfolgt sind usw.
1. Was ist daran schlimm, wenn jemand sieht wieviele Uploads schon erfolgt sind? Wofür schämst du dich?
2. Man kann auch so "hochzählen", dass der User nicht erkennen kann, dass überhaupt gezählt wird. Stichwort Blockchiffre. Funktioniert ohne Zufall, terminiert immer, in O(n).
Mit Zitat antworten
  #17 (permalink)  
Alt 08-12-2008, 13:55
Patrick_PQ
 Registrierter Benutzer
Links : Onlinestatus : Patrick_PQ ist offline
Registriert seit: Aug 2003
Beiträge: 480
Patrick_PQ ist zur Zeit noch ein unbeschriebenes Blatt
Standard

zurück zur Ausgangsfrage: etwas eleganter - und ggf. auch performanter - könnte es je nach DB auch so gehen:

Code:
INSERT INTO TABELLE (ID) VALUES ($ID) WHERE NOT EXISTS (SELECT ID FROM TABELLE WHERE ID=$ID)
Dann wird der Insert nur ausgeführt, wenn die ID noch nicht vorhanden ist. So ist ein vorheriges SELECT nicht nötig und es gibt auch keine UNIQUE Schlüsselverletzung. Beides ist vermutlich nicht sonderlich performant. Außerdem werden unnötige Fehler produziert.

Nach Ausführung des o.g. SQL kannst du die Anzahl der eingefügten Zahlen abfragen - bei Null neuen Datensätzen war die ID bereits vorhanden.
Mit Zitat antworten
  #18 (permalink)  
Alt 08-12-2008, 14:01
Truncate
 Registrierter Benutzer
Links : Onlinestatus : Truncate ist offline
Registriert seit: Nov 2005
Beiträge: 414
Truncate kann nur auf Besserung hoffen
Standard

@Patrick_PQ:

Und was ist jetzt der Unterschied zu einem normalen INSERT?
Mit Zitat antworten
  #19 (permalink)  
Alt 08-12-2008, 14:03
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

OffTopic:
Zitat:
Außerdem werden unnötige Fehler produziert.

Mit Zitat antworten
  #20 (permalink)  
Alt 08-12-2008, 14:23
Patrick_PQ
 Registrierter Benutzer
Links : Onlinestatus : Patrick_PQ ist offline
Registriert seit: Aug 2003
Beiträge: 480
Patrick_PQ ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Mein Insert wird nur ausgeführt wenn die Bedingung erfüllt ist - sprich die ID noch nicht vorhanden ist. Wenn die ID bereits vorhanden ist, wird die Insert Anweisung nicht ausgeführt und es tritt kein Unique Fehler auf.

Trotzdem sollte natürlich ein Unique Schlüssel gesetzt werden - sicher ist sicher.

Ohne die Bedingung wird die Insert Anweisung in jedem Fall ausgeführt, wenn die ID bereits vorhanden ist, wird bei Unique Einschränkung auch kein Satz angelegt - dafür aber eine unnötige Fehlermeldung ausgeworfen.
Mit Zitat antworten
  #21 (permalink)  
Alt 08-12-2008, 15:15
Truncate
 Registrierter Benutzer
Links : Onlinestatus : Truncate ist offline
Registriert seit: Nov 2005
Beiträge: 414
Truncate kann nur auf Besserung hoffen
Standard

Unique ist natürlich vorhanden... deswegen reicht meiner Meinung nach auch ein normaler INSERT mit anschließender Abfrage der betroffenen Sätze aus...
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:21 Uhr.