+ Antworten
Ergebnis 1 bis 6 von 6

Thema: SQL-Zugriffsfehler

  1. #1
    Neu an Board
    Registriert seit
    12.08.2007
    Beiträge
    26
    Bedankte sich
    4
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard SQL-Zugriffsfehler

    Hab mich grad erst im Forum angemeldet, ich bitte höflich um Entschuldigung falls ich das an falscher Stelle poste - habe aber keine bessere Kategorie gefunden!

    Wäre sehr dankbar wenn mir jmd. kurz helfen könnte - bin schon am verzweifeln!

    Also... ich hab mir auf einer Joomla-Seite eine kleine php-Datei gebastelt, die nun einen Datensatz aktualisieren sollte - folgende Fehlermeldung:

    Datensatz konnte nicht hinzugefügt werden! Access denied for user 'userxy'@'%' to database 'tabelle1'


    als Bemerkung: ich habe vom Server nur diese einen Login-Daten (die haben auch bei Abfragen problemlos funktioniert) Wenn ich die besagte Aktualisierungs-Abfrage direkt über phpMyAdmin in die SQL-Befehlszeile eingebe funzt alles!
    Könnte es etwas mit Joomla zu tun oder kann es sogar noch an einem fehlerhaften php-Code liegen

    Vielen Dank schon einmal
    lg Dominic

  2. #2
    Gehört zum Inventar
    Registriert seit
    18.02.2005
    Beiträge
    8.841
    Bedankte sich
    85
    Erhielt 2.269 Danksagungen
    in 1.936 Beiträgen

    Standard

    Wie wird die PHP Datei eingebunden?
    Poste doch mal bitte etwas mehr, wenn nicht den gesamten Code.

    Gruß
    ec

  3. #3
    Neu an Board
    Registriert seit
    12.08.2007
    Beiträge
    26
    Bedankte sich
    4
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Vielen Dank für die rasche Hilfe! - muss ich mir merken dieses Forum!!

    Hab die php-Datei einfach auf den selben ftp-server geladen und lade sie mit hilfe eines Wrappers ins Joomla (Abfragen funktionieren aber...)

    Hier einmal der Code (wenn du mehr möchtest einfach sagen)
    PHP-Code:
    <?php

    $id 
    $_POST["kat1_id"];
    $signin $_POST["kat1_sign"];
    //holt sich relevante Daten aus der vorigen Datei

    include("connect.php"); //enthält die korrekten Login-Daten


    $sql "
    UPDATE do_dienstplan_kat1
    SET 
    kat1_sign = '$signin',
    WHERE kat1_id =$id"
    ;


    $resultat mysql_db_query("do_dienstplan_kat1"$sql);

    if (
    $resultat) {
        echo 
    "Datensatz erfolgreich geändert!<br>";
        echo 
    "<a href='dienstplan.php'>Zurück zur Übersicht</a>";
    } else {
        echo 
    "Datensatz konnte nicht hinzugefügt werden! ".mysql_error();
    }

    ?>

  4. #4
    Gehört zum Inventar
    Registriert seit
    18.02.2005
    Beiträge
    8.841
    Bedankte sich
    85
    Erhielt 2.269 Danksagungen
    in 1.936 Beiträgen

    Standard

    Schon ins Manual gesehen?
    http://www.php-center.de/de-html-man...-db-query.html

    Edit: Eine SQL-Injektion ist bei dir übrigens auch möglich. Die Daten aus dem globalen POST
    Array direkt in die SQL Abfrage zu geben ist nicht zu empfehlen. Auch POST Daten kann
    man nachbauen.

    Gruß
    ec

  5. Erhielt Danksagungen von:


  6. #5
    Neu an Board
    Registriert seit
    12.08.2007
    Beiträge
    26
    Bedankte sich
    4
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    so... jetzt hab ich alle fehler behoben (da waren tatsächlich no a paar - stell da vor)

    jetzt geb ich auch einstweilen einmal ruhe

    Vielen Dank & Gute Nacht

  7. #6
    Gehört zum Inventar
    Registriert seit
    18.02.2005
    Beiträge
    8.841
    Bedankte sich
    85
    Erhielt 2.269 Danksagungen
    in 1.936 Beiträgen

    Standard

    PHP-Code:
    $sql "
    UPDATE do_dienstplan_kat1
    SET
    kat1_sign = '$signin'
    WHERE kat1_id = '$id'"

    Ist $id ein sting? Ich denke nicht oder?
    Schreibe besser
    PHP-Code:
    WHERE kat1_id ".(int)$id; 
    Schau dir bezüglich $signin mal die PHP Funktion mysql_real_escape_string() an.
    statt dem roten 1er hätt ich gern eine vorher definierte Variabel eingebaut - is das möglich
    PHP-Code:
    $where '1'//yes, it is a string!
    $sql "
    UPDATE do_dienstplan_kat1
    SET
    kat1_sign = '"
    .mysql_real_escape_string($signin)."'
    WHERE kat"
    .$where."_id = ".(int)$id
    Edit: Das mit dem Variablen Datenfeld ist übrigens nicht unbedingt zu empfehlen.
    Je nachdem was du da vor hast wäre es wohl besser die Kategorie etc. zusätzlich
    in der Datenbank in einem eigenem Feld zu speichern. im ersten Moment weiß
    ich noch nicht einmal wofür das gut sein sollte die Bezeichung des Datenfeldes
    variabel zu benennen.

    Gruß
    ec

+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein