1Danke
ERLEDIGT
JA
JA
ANTWORTEN
14
14
ZUGRIFFE
1358
1358
EMPFEHLEN
-
15.02.11 12:37 #1
- Registriert seit
- Nov 2007
- Beiträge
- 255
Hallo,
ich möchte gerne zeilen in einer Tablle anlegen,... meine tabelle ist so aufgebaut
Code :1 2 3 4 5 6 7 8 9 10
id | ident | time | ... --------------------------------- 1 | A4T | 237643 | ... 2 | E4s | 237643 | ... 3 | 5D1 | 237643 | ... 6 | V1u | 237643 | ... //237643 steht für einen timestamp
die id ist auto_increment
jetzt möchte ich gerne neue ident´s hinzufügen,...
INSERT INTO ´meine tabelle´ SET ident=A7S, time=time(),...
jetzt möchte ich aber ein prüfung machen ob die ident schon existiert wenn ja einfach ignorieren,...
ich versuchte bereits
undPHP-Code:INSERT IF NOT EXIST INTO ´meine tabelle' SET ident=E4s, time=time(),...
aber ich Vermute mal das diese immer die ID vergleichen und da diese automatisch hochzählt kommt es nie zum ignorieren,... was tun?PHP-Code:INSERT IGNORE INTO ´meine tabelle' SET ident=E4s, time=time(),...
-
Was heisst einfach ignorieren? Der ganze INSERT wegschmeissen?
Die normalen gehen eigentlich immer auf den PrimaryKey
So auf die Schnelle und ungetestet, wenn du nicht auf den PrimaryKey testest
Code sql:1 2 3 4 5 6 7 8 9
INSERT INTO myTable SELECT newRow.3* FROM (SELECT 1 AS id, 'A4T' AS ident, 237643 AS TIME) AS newRow RIGHT JOIN myTable ON newRow.ident = myTable.ident WHERE myTable.id IS NULL
Achja, ich verschiebs mal zu den Datenbanken---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
15.02.11 13:00 #3
- Registriert seit
- Nov 2007
- Beiträge
- 255
ja,...
ich mache folgendes,... ich lege eine-> ident (nummer) an und dann gehe ich auf bearbeiten,...
im bearbeiten kann ich dann die restlichen Felder ausfüllen,...
wenn jetzt aber schon diese eine ident (nummer) existiert, soll das anlegen übersprungen werden.
-
Siehe mein Nachtrag von weiter oben....
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
15.02.11 15:18 #5
- Registriert seit
- Nov 2007
- Beiträge
- 255
Hallo,
danke erstmal...
die eine hälfte funktioniert ja schon mal.
wenn ich was anlege was schon existiert,...
wenn ich aber was neues anlegen will legt er nichts an :/
hier mal mein Orginalcode,...
das mit der ID hab ich nicht ganz verstanden,... in diesen teil des Programmes verwende ich keine ID´s,... lasse diese nur automatisch anlegen,... woher stammt die 1?PHP-Code:$AUtoSQL = "
INSERT INTO ".$autablename."
SELECT
newRow.3*
FROM
(SELECT '$au' AS au, '".time()."' AS time, '".time()."' AS modtime) AS newRow
RIGHT JOIN myTable
ON newRow.au = ".$autablename.".au
WHERE
".$autablename.".id IS NULL
";
--> au entspricht in diesen Fall jetzt ident (musste nicht programmtechnisch ein paar Änderungen vornehmen,...
--> die Spalte ID existiert zwar in der Tabelle, ist aber in diesen Fall ever unbekannt,...
-
item: du solltest myTable durch $autablename ersetzen
item: newRow.3* ist ein Schreibfehler meinerseits und heisst natürlich newRow.* , also ohne die 3---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
15.02.11 15:44 #7
- Registriert seit
- Nov 2007
- Beiträge
- 255
mag mich immer noch nicht,...
etwas mehr quählcode
das ich:PHP-Code:$AUtoSQL = "
INSERT INTO ".$autablename."
SELECT
newRow.*
FROM
(SELECT '$au' AS au, '".time()."' AS time, '".time()."' AS modtime) AS newRow
RIGHT JOIN ".$autablename."
ON newRow.au = ".$autablename.".au
WHERE
".$autablename.".ID IS NULL
";
$do_AUtoSQL = mysql_query($AUtoSQL);
rausgelöscht habe stört nicht?Code :1
SELECT 1 AS id,
-
Wenn die Felder des SELECT nicht ganeu mit den Feldern der Tabelle übereinstimmen, dann musst du die Felder im INSERT angeben
Code sql:1 2 3 4 5 6 7 8 9
INSERT INTO {$autablename} (au, TIME, modtime) SELECT newRow.* FROM (SELECT '{$au}' AS au, '".time()."' AS TIME, '".time()."' AS modtime) AS newRow RIGHT JOIN {$autablename} AS tab ON newRow.au = tab.au WHERE tab.id IS NULL
Ansonsten:
Da die diese Art von Fragen sehr oft kommt, habe ich mal ein Tutorial geschrieben wie man am besten auf Fehlersuche geht.
[PHP] [MySQL] Debug Queries
Geh es doch mal durch und falls du die Lösung nicht findest, poste mal das ausgegebe SQL-Statement ins Forum.---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
15.02.11 16:18 #9
- Registriert seit
- Nov 2007
- Beiträge
- 255
Hallo,
also mit der Fehlersuche bin ich nicht weitergekommen,... weil er (so tut er zumindest) alles richtig macht,...PHP-Code:$AUtoSQL = "
INSERT INTO ".$autablename." SET
au='$au',
import='1',
time='".time()."',
modtime='".time()."'
";
$AUtoSQL = "
INSERT INTO {$autablename} (au, time, modtime)
SELECT
newRow.*
FROM
(SELECT '{$au}' AS au, '".time()."' AS time, '".time()."' AS modtime) AS newRow
RIGHT JOIN {$autablename} AS tab
ON newRow.au = tab.au
WHERE
tab.ID IS NULL
";
if($do_AUtoSQL = mysql_query($AUtoSQL))
{
echo "OK";
}
else
{
die(mysql_error());
}
der obere teil trägt stur ein der untere teil macht nix wenn´s schon eingetragen ist (wie er soll) und wenn noch nichts eingetragen ist trägt er auch nichts ein,...
meine ausgabe ist momentan ein funktionsfähiges phpmyadmin,...
hier meine tabelle (evtl. ist da ein fehler):
PHP-Code:CREATE TABLE IF NOT EXISTS `orderlist` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`import` varchar(250) DEFAULT NULL,
`au` varchar(250) DEFAULT NULL,
`kunde` varchar(250) DEFAULT NULL,
`referenz` varchar(250) DEFAULT NULL,
`cat` varchar(250) DEFAULT NULL,
`termin` varchar(250) DEFAULT NULL,
`erledigt` varchar(250) DEFAULT NULL,
`info` varchar(250) DEFAULT NULL,
`time` varchar(250) DEFAULT NULL,
`modtime` varchar(250) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=64 ;
-
Da die diese Art von Fragen sehr oft kommt, habe ich mal ein Tutorial geschrieben wie man am besten auf Fehlersuche geht.
[PHP] [MySQL] Debug Queries
Geh es doch mal durch und falls du die Lösung nicht findest, poste mal das ausgegebe SQL-Statement ins Forum.---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
15.02.11 17:15 #11
- Registriert seit
- Nov 2007
- Beiträge
- 255
sorry, irgendwie peil ich das gerade alles nicht,...
Code :1 2 3 4 5 6 7 8 9
INSERT INTO orderlist (au, time, modtime) SELECT newRow.* FROM (SELECT 'GTF' AS au, '1297786126' AS time, '1297786126' AS modtime) AS newRow RIGHT JOIN orderlist AS tab ON newRow.au = tab.au WHERE tab.ID IS NULL
das ist meine Ausgabe bei:
und das:PHP-Code:echo "{$AUtoSQL}<br /><br />\n";
gibt mir nur 0 aus,...PHP-Code:echo mysql_affected_rows();
genauso phpmyadmin:
Code :1
0 Zeile(n) eingefügt. ( die Abfrage dauerte 0.0004 sek. )
Danke für die Hilfe
-> mehr konnte ich den todo leider nicht entnehmen,... habe ich etwas übersehen? das errorreporting hatte ich so schon drinnen,...Geändert von JesusFreak777 (15.02.11 um 17:17 Uhr)
-
Jepp. In meinem, bereits 2 mal verlinkten, Tutorial steht dass du es mit phpMyAdmin oder etwas dergleichen testen sollst.
Und welches ist dien ident aus deinem ersten Post?---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
15.02.11 18:12 #13
- Registriert seit
- Nov 2007
- Beiträge
- 255
ja mit phpmyadmin habe ich getestet,...
au ist mein ident,... wie ich bereit im dritten post erwähnte:
und die ID ist der Schlüsselwert der automatisch inkrementiert wird,...--> au entspricht in diesen Fall jetzt ident (musste noch programmtechnisch ein paar Änderungen vornehmen,...
PHPmyAdmin macht das selbe wie mein Script,... fügt nichts ein, obwohl der wert in der spalte au noch nicht existiert.
-
Oh, kleiner Fehler. LEFT anstelle von RIGHT
Ich rate dir, die JOIN-Geschichte zu studieren und zu verstehen. Ansonsten bist du immer auf Fremdhilfe angewiesen.---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
16.02.11 12:25 #15
- Registriert seit
- Feb 2008
- Ort
- Salzhemmendorf(Nds)
- Beiträge
- 51
Probier mal das hier:
Code :1 2 3 4 5 6
INSERT INTO orderlist (au, time, modtime) SELECT newRow.* FROM (SELECT 'GTF' AS au, '1297786126' AS time, '1297786126' AS modtime) AS newRow WHERE newRow.au NOT IN (SELECT au FROM orderlist)
2.Variante:
Code :1 2 3 4 5 6
INSERT INTO orderlist (au, time, modtime) SELECT newRow.* FROM (SELECT 'GTF' AS au, '1297786126' AS time, '1297786126' AS modtime) AS newRow WHERE NOT EXISTS(SELECT au FROM orderlist WHERE au=newRow.au)
Es ist erstaunlich, was man alles findet, wenn man etwas sucht...
Ähnliche Themen
-
Function does not exist
Von Asix im Forum PHPAntworten: 12Letzter Beitrag: 16.04.10, 19:41 -
insert into if not exist
Von Steusi im Forum PHPAntworten: 3Letzter Beitrag: 24.03.09, 10:16 -
eXist-DB und Cocoon
Von aytmolay im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 25.04.06, 17:06 -
if exist abfrage mit php
Von derdemo im Forum PHPAntworten: 2Letzter Beitrag: 06.07.05, 17:40 -
Where not exist
Von Riegel im Forum PHPAntworten: 19Letzter Beitrag: 10.06.05, 14:50





Zitieren

Login





