You are not logged in.

wcf.regNote.message

lichtonkel

Beginner

  • "lichtonkel" started this thread

Posts: 39

Occupation: staat. gepr. Informatiker Multimedia/Studierender

  • Send private message

1

Sunday, May 2nd 2004, 8:31pm

Anfängerfrage..... Problem mit schreiben in MySQL Datenbank

hallöchen,

ich hab hier son kleines problem mit dem schreiben in meine datenbank.
Die Daten werden richtig an das verarbeitende script übergeben und die verbindung zur datenbank wird auch aufgebaut.... nur bekomm ich dann beim schreiben ein problem.
Das Feld existiert in der db und so falsch kann das sql statement nicht sein, oder?
schaut mal bitte über den code, und sagt bescheid, falls euch da was auffällt....

<?
if(isset($_POST['absenden']))
{
$mytest=$_POST['testit'];
$dbHost="meinserver";
$dbUser="root";
$dbPass="";
$dbName="meineDB";
echo "if-bedingung war true...<br>";
echo "&Uuml;bergebene Daten: <b>$mytest</b><br>";
$connect = @ mysql_connect($dbHost, $dbUser, $dbPass) or die("Keine Verbindung zum Datenbankserver!");
$selectDB = @ mysql_select_db($dbName) or die("Konnte die Datenbank <b>$dbName</b> nicht ausw&auml;hlen!");
$sql = "INSERT INTO gbook VALUES ('$mytest')";
mysql_query($sql, $connect) or die("Konnte keine Daten in die Datenbank schreiben!");
}
else
{
echo "formular war leer";
}
?>

oder kann das evtl mit (nichtbestehenden) Rechten bei der datenbank zu tun haben?

es grüßt ein etwas ratloser
lichtonkel

Prometheus

Administrator

Posts: 3,278

  • Send private message

2

Sunday, May 2nd 2004, 8:47pm

naja ganz falsch isses nich is soweit garnicht schlecht.

allerdings in deinem skript kommt das selectdb erstens schonmal nie zum einsatz und zweitens connectest du die db wärend dem schreiben. änder das mal so um:

Quoted

<?
if(isset($_POST['absenden']))
{
$mytest=$_POST['testit'];
$dbHost="meinserver";
$dbUser="root";
$dbPass="";
$dbName="meineDB";
echo "if-bedingung war true...<br>";
echo "&Uuml;bergebene Daten: <b>$mytest</b><br>";
mysql_connect($dbHost, $dbUser, $dbPass) or die("Keine Verbindung zum Datenbankserver!");
mysql_select_db($dbName) or die("Konnte die Datenbank <b>$dbName</b> nicht ausw&auml;hlen!");
$sql = "INSERT INTO gbook VALUES ('$mytest')";
mysql_query($sql) or die("Konnte keine Daten in die Datenbank schreiben!");
}
else
{
echo "formular war leer";
}
?>
Jedwege Anfragen bitte an Technomausi oder ShaoKhan richten. Dieses Konto ist und bleibt inaktiv.

braindead

Beginner

Posts: 22

  • Send private message

3

Sunday, May 2nd 2004, 10:13pm

RE: Anfängerfrage..... Problem mit schreiben in MySQL Datenbank

Quoted

Original von lichtonkel
$sql = "INSERT INTO gbook VALUES ('$mytest')";


na da ist doch was falsch ;)

deine datenbank ist -> $dbName="meineDB";
deine tabelle ist -> gbook
aber welche spalte willst du in der tabelle ansprechen?

$sql = "INSERT INTO gbook (tabellenspalte) VALUES ('$mytest')";

wäre hier besser.

bd

lichtonkel

Beginner

  • "lichtonkel" started this thread

Posts: 39

Occupation: staat. gepr. Informatiker Multimedia/Studierender

  • Send private message

4

Monday, May 3rd 2004, 8:23am

uuups...ähm ~stammel~..... soviel dann zu meinen lesekünsten^^

danke euch beiden.. ne mischung aus beidem wird dann wohl funzen

greetz
lichtonkel

piep001

Intermediate

Posts: 338

Location: NRW

Occupation: Fachinformatiker (AE)

  • Send private message

5

Monday, May 3rd 2004, 8:25am

Wenn er nur eine einzige Spalte hat, wäre das doch ok gewesen, braindead.

Man muss übrigens auch nicht bei mehreren Spalten diese angeben, sondern nur alle erforderlichen Angaben als "Values" angeben und dort natürlich in der richtigen Reihenfolge.
INSERT INTO tabelle VALUES ('inhaltspalte1','inhaltspalte2','inhaltspalte3')
Spaß im Netz auf www.piep001.de

This post has been edited 1 times, last edit by "piep001" (May 3rd 2004, 8:26am)


Ephraim

Professional

Posts: 826

Location: coder-board.info

Occupation: Info-Student

  • Send private message

6

Monday, May 3rd 2004, 8:48am

Jep der Piep hat vollkommen recht :) ...
Wenn man für alle Spalten Daten angibt muss man die Spalten
nicht angegeben.

Hat man nur für die Spalten die nicht NULL sein dürfen Daten dann
muss man die Reihenfolge der Spalten angeben, wie die Daten nach
VALUES in der Klammer angegeben werden.

Also wenn er nur eine Spalte hatte war es komplett korrekt.

@Prom:
Wie meintest du des mit des Select wird nie aufgerufen? Und
des Conneten während dem schreiben check ich auch nicht!
Hier nochmal der Code von Lichtonkel:

PHP Source code

1
2
3
4
$connect = @ mysql_connect($dbHost$dbUser$dbPass) or die("Keine Verbindung zum Datenbankserver!"); 
$selectDB = @ mysql_select_db($dbName) or die("Konnte die Datenbank <b>$dbName</b> nicht ausw&auml;hlen!"); 
$sql "INSERT INTO gbook VALUES ('$mytest')";
mysql_query($sql$connect) or die("Konnte keine Daten in die Datenbank schreiben!");


Ich seh da nur des er sich die ConnectionID in $connect speichert und diese
dann bei mysql_query angibt, vollkommen legitim.
Und mysql_select_db gibt true oder false zurück, was er sich in $selectDB
speichert, also auch i.O.
Womit ich allerhöchstens ein Problem hätte sind die @'s in dem Script von ihm. Da er sich damit Referencen von den Rückgabewerten holt und des braucht er net bzw. weiss net einmal ob des Ok ist und nicht zu einem Fehler führt.

@Lichtonkel:
Hast du nur eine Spalte in deiner Gbook Tabelle? oder mehrere?
Wenn nur eine dann SOLLTE dein Code absolute funktionieren soweit
der User Root mit keinem Passwort korrekt ist.
Sinds mehrere Spalten dann musst du die Spalte angeben in die du deine
Daten schreiben willst.
Überprüfe auch mal ob du nicht noch andere Spalten hast die NOT NULL sein dürfen.

Ciao Ephraim

wcf.user.socialbookmarks.titel