PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MySQL: Primary Index & Auto Increment & Variablen



Latency
08.06.2004, 14:17
Tagchen, da meine mySQL Funktionen in PHP nun laufen, hab ich Gestern versucht ein Billig Script zu schreiben, dass einer Tabelle einfach immer einen neuen Datensatz hinzufügt.

Wenn die Tabelle leer ist, kann ich ihr Werte zuweißen, der Primary Index wird automatisch auf 0 gesetz.
Aber wenn ich danach nochmal Inofrmationen hinzufügen will, bekomme ich eine Fehlermeldung, dass der Primary Index schon vorhanden sei. Aber sollte diese "Auto Increment" Function nicht den Wert automatisch um +1 erhöhen?

Ich habe auch schon versucht den Index (Mein Primary Key heißt bei mir nicht id) mit mySQL_insert_id() zu erhöhen, ebenfals erfolglos.

Zudem ist es mir nicht möglich den Inhalt meiner PHP Variablen in eine Datenbank einzufügen. Feste Inhalt klappen hingegen. Muss ich irgendwas beachten um Variablen in eine DB einzufügen, oder ist das einfach nicht möglich?

dread
08.06.2004, 15:06
Poste doch mal den Quellcode, dann ist es leichter, dir zu helfen.

Latency
13.06.2004, 02:53
So, jetzt arbeite ich wieder an dem Script und kann schongleich mal das Erste Problem hinschreiben.


mysql_query('INSERT INTO News (news_type,news_topic,news_content) VALUES ($news_type,$news_topic,$news_content)');

Dieses Script Funktioniert nicht. Die Tabelle ist in Ordnung, es liegt einfach daran, dass er nicht den Inhalt der Variablen in die Datenbank schreibt. Weiß jemand abhilfe?

Zweites Problem:
Wenn ich in die Datenbank Feste Inhalt eintragen will. *siehe Code*


mysql_query('INSERT INTO News (news_type,news_topic,news_content) VALUES ("a","b","c")');
So funktioniert das beim ersten mal. Er trägt die Werte in die Tabelle. Wenn ich danach aber nochmal etwas in die Tabelle eintragen will, kommt ne Fehlermeldung, das der Primary Key bereits vorhanden ist. Warum?
Das Feld, dass als Primary Key definiert ist, ist als Datentyp Init und Autoincreasment ist auch aktiviert, trozdem klappt es nicht.

Dingsi
13.06.2004, 03:57
zum ersten problem: du kannst in apostrophen (') keine variablen einfach so benutzen. dafür brauchst du doppelte anführungszeichen (") oder du unterbrichst den string ('hallo '.$name.'!').
wenn du " nimmst müsstes du aber um die variablen ' anstatt " machen. ;)

zum zweiten... öh.. kA, ich denk mal drüber nach. klingt seltsam. o_O
ich mach meine felder eigentlich immer zu nem einfachen index und nicht primary. kA wies mit primary so aussieht...

Latency
13.06.2004, 04:55
Original geschrieben von Dingsi
zum ersten problem: du kannst in apostrophen (') keine variablen einfach so benutzen. dafür brauchst du doppelte anführungszeichen (") oder du unterbrichst den string ('hallo '.$name.'!').
wenn du " nimmst müsstes du aber um die variablen ' anstatt " machen. ;)

o_O
Kannst du mir dazu ein Beispiel machen? Denn ich hab nicht so ganz verstanden was du von mir willst.

Dingsi
13.06.2004, 06:13
liebe. *_* http://www.multimediaxis.de/images/smilies/old/1/knuffel.gif

öh.. ne:
mach

mysql_query( ' INSERT INTO News (news_type,news_topic,news_content) VALUES ($news_type,$news_topic,$news_content) ' );

einfach zu

mysql_query( " INSERT INTO News (news_type,news_topic,news_content) VALUES ($news_type,$news_topic,$news_content) " );

dread
13.06.2004, 17:09
Versuch es mal so:


$sqlinsert = "INSERT INTO News (news_type,news_topic,news_content) VALUES (".$news_type.",".$news_topic.",".$news_content.")";
mysql_query($sqlinsert);


Zu deinem Primary Key Problem fällt mir nur diese Sektion (http://dev.mysql.com/doc/mysql/en/constraint_primary_key.html) aus dem MySQL Manual ein, wie dort beschrieben, könntest du das Problem mit "INSERT IGNORE" umgehen. Wenn ich dein Problem richtig verstanden habe.

Latency
15.06.2004, 01:31
Hach dieses PHP mySQL Dingsi bringt mich noch ganz zum Verzweifeln -_-

Es klappt wieder nix, und ich weiß nicht warum.


mysql_query("INSERT INTO News (news_type,news_topic,news_content) VALUES ($news_type,$news_topic,$news_content)");

So sieht mein Code aus, und so die Fehlermeldung: Unknown column 'Aktuell' in 'field list'

Dieses Besagte "Aktuell" ist der Wert der Variable $news_type.

Weiß jemand rat? Denn ich bin mit meinem begrenzten PHP Latein am Ende -_-

Denn in der Tabenbank gibt es ein Feld namens news_type, und das hat als Datentyp Text, also ist ein Datentypkonflikt ausgeschlossen, trozdem läuft nix.

Chocwise
15.06.2004, 01:47
Versuch einfach mal das:

mysql_query("INSERT INTO News (news_type,news_topic,news_content) VALUES ('$news_type','$news_topic','$news_content')");
Frag nicht weshalb und wie ich darauf komme, ich weiß nur das ich es selbst so ähnlich mache (wennauch etwas aufgedröselter).

Latency
15.06.2004, 01:52
Ich fange an den PHP Syntax immer mehr und mehr zu hassen -_-
Denn only god knows why, aber es läuft -_-
Thx@Chocwise

Chocwise
15.06.2004, 03:37
Original geschrieben von Latency
Ich fange an den PHP Syntax immer mehr und mehr zu hassen -_-
Denn only god knows why, aber es läuft -_-
Thx@Chocwise
Dabei hat PHP die IMO schönste Syntax von allen die ich bisher gesehen hab (Pascal, Java (+Script), C++, Perl, Delphi (Hmja, is ja Pascal... irgendwo)). :D
Aber MySQL suckt tatsächlich ein wenig, ich schau da auch noch nicht so ganz durch.

Dingsi
15.06.2004, 04:45
Original geschrieben von Latency
Ich fange an den PHP Syntax immer mehr und mehr zu hassen -_-
Denn only god knows why, aber es läuft -_-
Thx@Chocwise
öhm...
erstens isses kein php was deinen fehler verursacht, sondern mysql und zweitens

da fehlten doch ganz einfach die ' um die variablen und um strings müssen afaik immer ' oder " rum wenn sie irgendwo eingetragen werden sollen (auch in mysql) und als keine ' drum waren, dachte der mysql-parser das der inhalt deiner variablen ("Aktuell") ein tabellen-feld und kein einfacher string sein sollte...

okay.. öhm.. verstanden? wenn nich auch egal.
ich versteh das was ich schreibe ja selbst manchmal kaum..


php roxXx. :| und mysql auch. :|
nur apache stinkt. der kackt bei mir andauenrd ab. (pf.. der darf doch wohl >50 queries pro seite aushalten müssen :()

Chocwise
15.06.2004, 05:24
Original geschrieben von Dingsi
...php roxXx. :| und mysql auch. :|
nur apache stinkt. der kackt bei mir andauenrd ab. (pf.. der darf doch wohl >50 queries pro seite aushalten müssen :()
Hast du vielleicht vHosts definiert? Falsch eingestellte vHosts sind oft und gerne Ursache für Absturzaktionen.

Latency
16.06.2004, 01:33
Ähm jo.. moinsen, das mit dem Autoincreasment habe ich hinbekommen. Ich hatte in der Tabelle 0 als standartwert des Primärschlüssels eingetragen, das hat ihm wohl nicht gepasst ^^°

Jo, jetzt aber mal ne andere PHP frage: Angenommen ich habe 3 mal den <?php ?> Tag auf der Page. Und in Tag 1 wird eine Verbindung zu einer Datenbank erstellt, und einzelne Inhalte in Variablen gespeichert.

ist es dann möglich in Php Tag nummer 2 und 3 auf die Variablen zuzugreifen? :confused: Würde mich mal intressieren, da falls es möglich ist, würde es mir ne Meenge arbeit ersparen.

Dingsi
16.06.2004, 01:41
Klar kann man das.
In einem Script (d.h. in allen Tags und auch in allen includeten (:A) Dateien) können alle Variablen, Handles (DB,File,wasauchimmer) und was es noch so gibt, die vorher erstellt wurden, überall benutzt werden.