• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

etw. in einer bestimmten ID einer Datenbank/Tabelle speichern

lennard

Neues Mitglied
Hallo,
ich programmiere zurzeit einen einfachen Kalender wo man etwas eintragen kann. Dafür benutze ich auch nur grundlegende Befehle... und halt mysql. Auf mysql habe ich eine datenbank namens kalender und in dieser eine Tabelle namens termine erstellt. In dieser Tabelle ist eine id. Mein Problem ist es, das sich nicht alles in der ID 1 speichert. z.b. wenn ich zuerst in beschreibung1 "hallo" eintrage, es speichere und dann in beschreibung2 "hi" eintrage, ist hallo in id 1 und hi in id 2.

In der Datenbank habe ich so die Tabelle erstellt:
CREATE TABLE termine(
id int AUTO_INCREMENT PRIMARY KEY,
beschreibung1 BLOB NOT NULL,
beschreibung2 BLOB NOT NULL
);

Und das ist bisher mein kalender( habe vorerst nur für die ersten beiden Tage programmiert):

require("kalenderconnection.php");
if(isset($_POST["submit"])){
$beschreibung1 = $_POST["beschreibung1"];
$beschreibung2 = $_POST["beschreibung2"];
if($beschreibung1 !== ""){
aregisterUser($beschreibung1);
}
if($beschreibung2 !== ""){
bregisterUser($beschreibung2);
}
}
function aregisterUser($beschreibung1){
global $kcon;
$stmt = $kcon->prepare("INSERT INTO termine(beschreibung1) VALUES(:beschreibung1)");
$stmt->bindParam(":beschreibung1", $beschreibung1);
$stmt->execute();
}
$stmt = $kcon->query("SELECT * FROM termine");
while ($row = $stmt->fetch()) {
$b1=$row['beschreibung1'];
}
function bregisterUser($beschreibung2){
global $kcon;
$stmt = $kcon->prepare("INSERT INTO termine(beschreibung2) VALUES(:beschreibung2)");
$stmt->bindParam(":beschreibung2", $beschreibung2);
$stmt->execute();
}
$stmt = $kcon->query("SELECT * FROM termine");
while ($row = $stmt->fetch()) {
$b2=$row['beschreibung2'];
}
?>

Wenn mir jemand hilft, würde ich mich sehr darüber freuen.
 
Zuletzt bearbeitet:
Dein insert ist falsch, du brauchst ein update mit where id=$id

Einige Anmerkungen:
Dein Denglisch ist alle andere als schön, mal deutsch (beschreibung), mal englisch (registerUser)

aregisterUser und bregisterUser sind vom Namen her mehr als unglücklich, in einem halben Jahr weißt du nicht mehr, was das a bzw. b bedeuten soll. So etwas macht die Wartung eines Scriptes unnötig schwieriger

Verabschiede die von global, es ist nur eine Frage der Zeit, wann du den Überblick verlierst. Übergebe der Funktion die Variable.

Du fängst keinerlei mögliche Fehler ab.

Auch wenn einige das anders sehen, solltest du dir das mal ansehen:
16.14. Warum soll ich nicht SELECT * schreiben?

Beim Einsatz von SQL-Datenbanken sollte das Abrufen aller Spalten eines Datensatzes per SELECT * vermieden werden. Stattdessen sollten die gewünschten Spaltennamen explizit aufgelistet werden (SELECT col1, col2 FROM …). Einige Vorteile:

Häufig werden in einer Abfrage nicht alle Spalten benötigt, die aktuell existieren oder in Zukunft existieren könnten, sodass unnötige Daten übertragen werden.
Bei expliziter Angabe der gewünschten Spalten können Datenbanksysteme unter Umständen Indizes zur Beantwortung von Abfragen nutzen.
Eine Auflistung der Spaltennamen macht den Code verständlicher, da die Tabellenstruktur nicht erst im Datenbankschema nachgelesen werden muss.
Bei Änderungen am Datenbankschema (etwa bei Entfernung oder Umbenennung einer Spalte) schlägt eine Query, die kein SELECT * nutzt, sofort fehl. Das ist hilfreich, da so keine Stelle im Code übersehen werden kann, an der wahrscheinlich auch die PHP-Datenstrukturen an das neue Schema angepasst werden müssen.
 
Ich habe es nun so ausprobiert wie du es gesagt hast, doch es funktioniert immer noch nicht.
Das ist nun das Programm:
$id=1;
require("kalenderconnection.php");
if(isset($_POST["submit"])){
$beschreibung1 = $_POST["beschreibung1"];
$beschreibung2 = $_POST["beschreibung2"];
if($beschreibung1 !== ""){
aregisterUser($beschreibung1);
}
if($beschreibung2 !== ""){
bregisterUser($beschreibung2);
}
}
function aregisterUser($beschreibung1){
global $kcon;
$stmt = $kcon->prepare("INSERT INTO termine(beschreibung1) VALUES(:beschreibung1)" where id=$id);
$stmt->bindParam(":beschreibung1", $beschreibung1);
$stmt->execute();
}
$stmt = $kcon->query("SELECT beschreibung1 FROM termine");
while ($row = $stmt->fetch()) {
$b1=$row['beschreibung1'];
}
function bregisterUser($beschreibung2){
global $kcon;
$stmt = $kcon->prepare("INSERT INTO termine(beschreibung2) VALUES(:beschreibung2)" where id=$id);
$stmt->bindParam(":beschreibung2", $beschreibung2);
$stmt->execute();
}
$stmt = $kcon->query("SELECT beschreibung2 FROM termine");
while ($row = $stmt->fetch()) {
$b2=$row['beschreibung2'];
}
?>

Bitte hilf mir!
 
es funktioniert immer noch nicht
Eine denkbar schlechte Problembeschreibung!

Wieso $id = 1? hast du nur einen Datensatz in der Datenbank?
$id ist in der Funktion unbekannt.
Eventuelle Fehler fängst du immer noch nicht ab.
Du benutzt weiterhin global
Solange dein Script nicht fertig und getestet ist, solltest dein Script immer so beginnen:
PHP:
<?php
   error_reporting(E_ALL);
   ini_set('display_errors', true);

Und benutze bitte die Code-Formatierungen des Forums, damit man den Quellcode besser lesen kann:
1720439392190.png
 
ich will alle daten nur noch in der ersten zeile einfügen. Kann mir einfach irgendwer sagen wie ich es machen kann.
 
das ist die tabelle meiner datenbank für zwei tage
Ich verstehe den Sinn dahinter nicht - und eine Tabelle mit nummerierten Spalten ist ein deutlicher Hinweis auf ein defektes Datenbankdesign … Außerdem ist »INSERT … WHERE …« falsch - INSERT kennt kein WHERE, du musst UPDATE verwenden (wie msi in #2 schon schrieb).
 
Erstens ist es kein defektes Datenbankdesign und zweitens nicht mit nummerierten Spalten sondern Zeilen.
 
Zurück
Oben