Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   [mysql] insert und autoincrement (https://www.delphipraxis.net/151341-%5Bmysql%5D-insert-und-autoincrement.html)

MrSpock 13. Mai 2010 21:21

Datenbank: MySQL • Version: 5.1.45 • Zugriff über: PHP

[mysql] insert und autoincrement
 
Hallo,

habe ein php script, welches ein INSERT commando erzeugt:

Code:
INSERT INTO tab123 VALUES ('','$datum','$zeit','$sname','$semail','$swww','$seintrag','$ip')";
Der erste Wert, der hier als leere Zeichenkette übergeben wird, ist ein autoinc-Feld. Bis vor einiger Zeit hat die Anweisung funktioniert, jetzt meckert der Server (möglicherweise neuere Version), weil die erste Zeichenkette leer ist.


[edit=Matze]"i" in den Titel eingefügt, damit das Thema leichter über die Suchfunktion gefunden wird. MfG, Matze[/edit]

mkinzler 13. Mai 2010 21:24

Re: [mysql] insert und autoncrement
 
Lass den ersten Wert weg:

SQL-Code:
insert into <Tabelle>(<Feldliste ohne ID-Feld>) values (<Werteliste ohne ID-Feld>);

MrSpock 13. Mai 2010 21:27

Re: [mysql] insert und autoncrement
 
Hallo Markus,

hat sich da etwas geändert in der letzten Zeit?

Bernhard Geyer 13. Mai 2010 21:28

Re: [mysql] insert und autoncrement
 
sehe ich auch so. ich denke jeder andere DB-Server würde hier Meckern.

Ach ja. Auch bei PHP sollte man Parametrisierte Abfragen verwenden.

mirage228 13. Mai 2010 21:29

Re: [mysql] insert und autoncrement
 
Könnte bei MySQL eventuell am "Server SQL Mode" (TRADITIONAL u. dgl.) liegen. Da gibt es mehrere Modi, die unter anderem bestimmen, wie bestimmte Eingabewerte gehandhabt werden...

mkinzler 13. Mai 2010 21:34

Re: [mysql] insert und autoncrement
 
Zitat:

Zitat von MrSpock
Hallo Markus,

hat sich da etwas geändert in der letzten Zeit?

Dürfte sich eigentlich nicht. Ein Autowert findet nur Anwendung, wenn das Feld den Wert NULL hat. Möglicherweise hat aber die Zugriffsbibliothek das leere Feld nach NULL gewandelt.
Zitat:

sehe ich auch so. ich denke jeder andere DB-Server würde hier Meckern.
Jein. Bei DBMS, welche autoinc per Trigger händeln, kommr es auf diesen an, ob er auf is NULL überprüft oder nicht.

MrSpock 13. Mai 2010 21:47

Re: [mysql] insert und autoncrement
 
Danke für alle Antworten. Ich nehme auch an, dass ds unsaubere Script nach einem Server Update jetzt auf die Nase gefallen ist. Mit der Angabe der Felder und der dazugehörigen Werte funktioniert es jetzt wieder. Ich habe schon über ein Jahr keinen Eintrag mehr in meinem Gästebuch gehabt (auf 2 verschiedenen Homepages) und nicht gemerkt, dass es wegen eines Scriptfehlers war. Es hat halt vorher funktioniert. :wall:

alcaeus 14. Mai 2010 08:12

Re: [mysql] insert und autoncrement
 
Moin,

wenn du dort NULL uebergeben haettest, wuerde es funktionieren. Der SQL-Server meckert hier (vollkommen zu recht) rum, weil du ihm nen String als Integer verkaufst. Im Zweifel tuts auch eine 0 anstatt NULL um den Autoincrement zu triggern (IIRC), aber die sicherste Alternative ist immer noch das Ganze mit Prepared Statements zu erledigen. (bzw. alternativ ein ORM zu verwenden wenn du bisserl mehr Komfort haben willst)

Greetz
alcaeus

mkinzler 14. Mai 2010 08:17

Re: [mysql] insert und autoncrement
 
GGf durch entsprechenden Trigger für NULL sorgen


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz