MySQL Schreibrechte

Hallo,

Ich benutze ein Formularscript, welches die Eingaben ein einer MySQL-Tabelle speichert.
Das Skipt funktioniert anscheinend auch soweit, nur beim Speichern kommt diese Meldung:

"Konnte die Datenbank nicht &ändern: Access denied for user ‘timotheus123’@‘localhost’ to database ‘daten’ "

Die Eingegebenen Daten wurden nicht gespeichert…

Kann es sein, dass man nur mit PHPmyAdmin die Datenbanken bearbeiten kann, und ein anderes Skript keine Schreinrechte besitzt?

Gruss Timotheus123

Schreib- und allgemein Zugriffs-Rechte hängen nicht am Script, sondern am jeweiligen DB-Nutzer - und du hast die Verbindung vermutlich mit einem hergestellt, der nicht die erforderlichen Rechte hat.

bzw. auf die Datenbank “daten” hat der Benutzer “timotheus123” definitiv keine Rechte.
Denn immerhin ist DB-Name == Nutzer-Name

ne, das ist die DB “timotheus123”, und die Tabelle “Daten”, auf die ich keinen Schreibzugriff habe! In PHPMyAdmin kann ich die DB, und Tabelle “Daten” bearbeiten, erstellen, und ändern.

In der Tabelle “Daten” gibt es dann die Spalten: name, vorname, anschrift, email, in die das Skipt schreiben soll. Also habe ich ja das recht dazu! Da es wegen der Warnmeldung aber nicht geht, ist meine Frage, ob Sripte nicht schreiben, sindern nur lesen dürfen.

Timotheus123

Access denied for user ‘timotheus123’@‘localhost’ to database ‘daten’ "

hat übrigens nichts damit zutun, das du keine schreiberecht hast… du kannst die userechte bei bplaced soweit ich weiß icht ändern.

Access denied = Zugang verweigert
for user ‘timotheus123’@‘localhost’ = für Benutzer […]
to databse ‘daten’ = zur Datenbank […]

zu deutsch: du nutzt falsche nutzerdaten ^^

Kurz noch was zu PHPMyAdmin…
Es ist auch nur nen Script. Du kannst es im übrigen auch selber auf deinen Space packen.
Der einzige unterschied zwischen PHPMyAdmin und einem normalen Script oder nem “eigenen” PHPMyAdmin ist der, dass das PHPMyAdmin von bplaced eine höhere Script Zeit hat und allgemein Ressourcen.

Die Stelle sieht so aus:

[color=#FF0000]$status = mysql_connect(“localhost”, “timotheus123”, “******”);

    if ( ! $status )
    {
        die("Konnte die Datenbank nicht erreichen!");
    }
    
    $status    =    mysql_select_db("daten");
    
    if ( ! $status )
    {
        die("Konnte die Datenbank nicht &ändern: " . mysql_error() );
    }[/color]

Zuerst connecte ich zu meiner DB (timotheus123 - meinem Benutzernamen), in localhost, und mit meinem Passwort.

Und unten schreibe ich in die Tabelle daten! Oder muss da nochmal mein Benutzernamen stehen? Dann wüste das Skript aber doch nicht, in welche Tabelle es schreiben soll, oder?

Timotheus123

du musst die datenbank nach dem login auf dem db-server auswählen, dann die tabelle auswählen bzw erstellen

[quote=“timotheus123”]Die Stelle sieht so aus:
$status = mysql_connect(“localhost”, “timotheus123”, “******”);
if ( ! $status )
{
die(“Konnte die Datenbank nicht erreichen!”);
}
$status = mysql_select_db(“daten”);

    if ( ! $status )
    {
        die("Konnte die Datenbank nicht [color=#FF0000]&[/color]ändern: " . mysql_error() );
    }

[/quote]
Ihh er Formatiert mit Leerzeichen^^
Jedenfalls… die ROTEN stellen sind falsch^^ Einmal versuchst du die Datenbank “daten” auszuwählen wobei ich dir schon vorhin sagte das es “timotheus123” ist.
Das “&” ist falsch^^ eines zu viel (sah man auch im output)

Außerdem kann man keine Tabelle auswählen^^ Den in jeder Abfrage sagt man welche man meint :wink:

btw
was meinst du was mysql_select_db heißt bzw. macht? Es heißt genau das was es macht^^
DB == Datenbank (Database) != Tabelle (Table)

Nein, da wählst du erst mal nur die Datenbank daten aus als die, mit der im folgenden gearbeitet werden soll (in so fern ist die Fehlermeldung natürlich reichlich irreführend).

Vielleicht solltest du dir erst mal den Unterschied zwischen einer Datenbank und einer Tabelle in dieser Datenbank klar machen - bis jetzt scheint er dir noch nicht klar zu sein.

Vielen Dank! :hail:

Jetzt kommt diese Fehlermeldung nicht mehr! :slight_smile:

Jetzt kommt folgende: "Konnte den Datensatz nicht eintragen: Unknown column ‚name‘ in ‚field list‘ "

Muss ich jetzt in der DB Timotheus123 eine Tabelle mit dem Namen „name“ machen, oder reicht in der Tabelle „daten“ eine Spalte mit dem Namen „name“?

Timotheus123

PS:Stimmt sie Hirachie?
–>In einer Datenbank, eine Tabelle, eine Spalte! oder?

php-einfach.de/einf_mysql.php
ich würde dir ma eben das Tut ans Herz legen und auch durchmachen und merken :wink:
Ansich läufts so:
Connect to Database Server,
Select Database,
MySQL Query

Beispiel queryINSERT INTO `tabelle` (`feld`,`feld2`) VALUES ('wert1','wert2')

[quote=“timotheus123”]Jetzt kommt folgende: "Konnte den Datensatz nicht eintragen: Unknown column ‘name’ in ‘field list’ "

Muss ich jetzt in der DB Timotheus123 eine Tabelle mit dem Namen “name” machen, oder reicht in der Tabelle “daten” eine Spalte mit dem Namen “name”?[/quote]
Was heisst denn column wohl übersetzt - Tabelle, oder doch eher Spalte?

White-Tiger hat Recht - nimm dir ein Tutorial, und arbeite das in Ruhe durch. Denn derzeit scheint’s noch an allen Ecken und Enden an Grundlagenwissen zu fehlen.

Hallo.

Das Tutorial habe ich mir durchgelesen, und jetzt diesen Code geschrieben:

[color=#BF0000]<?php

if ( isset($_REQUEST[“do”]) && $_REQUEST[“do”] == “insert” )
{

$error_msg    =    "";    

if ( $_REQUEST["na"] == "" )
{
    $error_msg    =    "Bitte geben Sie einen Namen an.<br>";
}

if ( $_REQUEST["vo"] == "" )
{
    $error_msg    .=    "Bitte geben Sie einen Vornamen an.<br>";
}

if ( $_REQUEST["po"] == "" )
{
    $error_msg    .=    "Bitte geben Sie eine Position an.<br>";
}
    if ( $_REQUEST["pw"] == "" )
{
    $error_msg    .=    "Bitte geben Sie ein Passwort an.<br>";
}
if ( $error_msg    == "")
{

$status = mysql_connect(“localhost”, “timotheus123”, “DOMino123”);

    if ( ! $status )
    {
        die("Konnte die Datenbank nicht erreichen!");
    }
    
    $status    =    mysql_select_db("timotheus123");
    
    if ( ! $status )
    {
        die("Konnte die Datenbank nicht &auml;ndern: " . mysql_error() );
    }[/color]


 [color=#0000FF] $query = "INSERT INTO `daten` (`na`,`vo`,`po`,`pw`) VALUES ('na','vo','po','pw',)"; 

$result = mysql_query( $query );[/color]

    [color=#BF0000]if ( ! $result )
    {
    die("Konnte den Datensatz nicht eintragen: " . mysql_error() );
    }
    else{

     echo "<font color='#00aa00'>";
     echo "Es wurde 1 Datensatz hinzugefügt<p>";
     echo "</font>";
  }

}

}
?>

<?php if ( $error_msg != "") { echo $error_msg; } ?>[/color]

Das blaue habe ich meiner Meinung nach, nach dem Tutorial, und nach White-Tiger’s Tipp verändert. Nur jetzt kommt folgende Fehlermeldung: “Konnte den Datensatz nicht eintragen: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘)’ at line 1”

Nur in der 1 Zeile finde ich kein ‘)’ und auch in den nächsten Zeilen nicht! Am HTML kann es nicht liegen. Kann mir jemand den Fehler nennen?

Vielen Dank im Vorraus,

Timotheus123

[quote=“timotheus123”]“Konnte den Datensatz nicht eintragen: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘)’ at line 1”

Nur in der 1 Zeile finde ich kein ‘)’ und auch in den nächsten Zeilen nicht![/quote]
Die Meldung kommt logischerweise von wem?
Richtig, von der Datenbank, an die du eine fehlerhafte Query geschickt hast.

Weiss die Datenbank irgendetwas von deinem PHP-Script?
Nein, logischerweise nicht, denn du hast ihr ja nur ein bisschen SQL-Code zur Ausführung geschickt.

Auf welchen Code wird sich diese Zeilenangabe also wohl beziehen - auf dein PHP-Script?
Nein, logischerweise nicht.

Vielleicht stattdessen auf die Query, die du an die Datenbank geschickt hast?
Aha …

Das ist also der Code, den du an die DB geschickt hast - und die beschwert sich, dass da “near”, also irgendwo in der Nähe von, einer runden Klammer was nicht stimmt, und zwar in der ersten (und in diesem Falle zufälligerweise auch einzigen) Zeile dieses Statements.

Also schauen wir uns das noch mal an - erste runde Klammer, vor der steht eine Liste mit vier Spaltennamen, alle schön durch Komma getrennt - sieht eigentlich gut aus.
Nächste runde Klammer, was steht vor der - vier Textwerte, auch alle durch Komma getrennt, und nach diesen … Huch, noch ein Komma! Warum, kommt da etwa noch ein Wert? Wir warten, warten, warten … nein, kommt wohl keiner mehr.

Also was muss jetzt wohl weg, ziemlich kurz vor dieser runden Klammer …?

wow Danke chrisb gute Erklärung :wink:
Hoffe das sieht timotheus123 auch so :stuck_out_tongue:

@timotheus123
Kannst du deinen code nicht einfach malin so einen schönen code block packen? Oben beim erstellen / ändern einfach code drücken und Quellcode rein :P Oder [code] selber schreiben und da rein.[/code]find das rote zwar net weils schon sagt das alles falsch ist (rot == fehler) ist schon mal nen Anfang zur Einsicht :smiley:

Danke,

Na klar, das Komma :ps:

Jetzt läuft das Skript auch klasse durch, und zeigt auch die Bestätigung
if ( ! $result )
{
die("Konnte den Datensatz nicht eintragen: " . mysql_error() );
}
else{

Nur in der DB wird in den Spalten kein Inhalt, sondern der Name der Variablen gespeichert.
na vo po pw
Bearbeiten Löschen na vo po pw
Bearbeiten Löschen na vo po pw
Bearbeiten Löschen na vo po pw
Bearbeiten Löschen

Warum wird der Name der Variablen, und nicht der Inhalt gespeichert?
(ja, ich habe andere Daten eingegeben gehabt - text1 text2 tex3 text4)

Timotheus123

Du sagst SQL, du willst in die spalten blabla den string blabla einfügen - falsch!
so wirds eher funken:

Hast du denn irgendwo die Variablen angegeben …?

Nein, hast du nicht - da steht lediglich reiner Text - na, vo, und so weiter.

Wenn dir noch nicht mal klar ist, warum das jetzt so nicht funktioniert hat - dann wird’s aber höchste Zeit, dass du dir ein Grundlagentutorial schnappst und durcharbeitest!

Dann ist die “Einstiegsstelle”, die White-Tiger dir bei dem von ihm genannten Tutorial genannt hatte, wo es gleich um MySQL ging, schon viel zu weit für dich - also fang vorne an, php-einfach.de/php-tutorial/php-tutorial.php

Hallo,

Ich werde die Tutorials lesen, da ich merke, dass ich defizite habe :ps:

Kann mir vielleicht einer sagen, wesshalb jetzt beim Abschicken das hier als antwort kommt?

Bitte geben Sie einen Namen an.
Bitte geben Sie einen Vornamen an.
Bitte geben Sie eine Position an.
Bitte geben Sie ein Passwort an.

Alle Felder sind ausgefüllt…

[code]<?php

if ( isset($_REQUEST[„do“]) && $_REQUEST[„do“] == „insert“ )
{

$error_msg    =    "";    

if ( $_REQUEST["$na"] == "" )
{
    $error_msg    =    "Bitte geben Sie einen Namen an.<br>";
}

if ( $_REQUEST["$vo"] == "" )
{
    $error_msg    .=    "Bitte geben Sie einen Vornamen an.<br>";
}

if ( $_REQUEST["$po"] == "" )
{
    $error_msg    .=    "Bitte geben Sie eine Position an.<br>";
}
    if ( $_REQUEST["$pw"] == "" )
{
    $error_msg    .=    "Bitte geben Sie ein Passwort an.<br>";
}
if ( $error_msg    == "")
{

$status = mysql_connect(„localhost“, „timotheus123“, „DOMino123“);

    if ( ! $status )
    {
        die("Konnte die Datenbank nicht erreichen!");
    }
    
    $status    =    mysql_select_db("timotheus123");
    
    if ( ! $status )
    {
        die("Konnte die Datenbank nicht &&auml;ndern: " . mysql_error() );
    }


  $query = "INSERT INTO `daten` (`na`,`vo`,`po`,`pw`) VALUES ('" . $na . "','" . $vo . "','" . $po . "','" . $pw . "')"; 

$result = mysql_query( $query );

    if ( ! $result )
    {
    die("Konnte den Datensatz nicht eintragen: " . mysql_error() );
    }
    else{

     echo "<font color='#00aa00'>";
     echo "Es wurde 1 Datensatz hinzugefügt<p>";
     echo "</font>";
  }

}

}
?>

<?php if ( $error_msg != "") { echo $error_msg; } ?> "> Name

Vorname

Position

Passwort

[/code]

so, habs extra in einen Code-Block gepackt :wink:

Vielen Dank für eure Hilfe,

Timotheus123