Ankündigung

Einklappen
Keine Ankündigung bisher.

SQL wirde ausgeführt liefer aber keinen Inhalt

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • SQL wirde ausgeführt liefer aber keinen Inhalt

    Guten Morgen,

    ich bin momentan dabei ein Ticket System für meine webseite zu schreiben.
    Nutzer können ein Thema auswählen und eine beschreibung mitsenden.
    Nutzernamen erstelldatum und bearbeitungsstatus werden in meiner MSSQL datenbank gespeichert.
    Den Ticket Text möchte ich mit der TicketID als Namen als TextDatei anlegen
    Das funktioniert soweit auch alles nur das er mir die datei mit leerem namen erzeugt.
    nach überprüfung habe ich gesehn das die SQL zwar ausgeführt wird aber mir keinen wert bzw NULL zurück gibt.

    PHP-Code:
    $stmt $conn->prepare("SELECT TOP 1 COUNT(*) AS Anzahl FROM $db_Account WHERE $db_Account.[Name] = :xname AND $db_Account.[Password] = :xpass");
        
    $stmt->bindParam(':xname'$user_name_ticket);
        
    $stmt->bindParam(':xpass'$ticket_pass);
        if(
    $stmt->execute()){
            
    $row $stmt->fetch();
            if (
    $row['Anzahl'] == 1){
                
    $admin_name =  "work_status";
                
    $date_content date("d-m-Y");
                
    $stmt $conn->prepare("INSERT INTO $db_Ticket(ticket_creatorID,ticket_status,ticket_work_status,ticket_work_admin,ticket_subject,ticket_date) VALUES(:t_name,1,1,:t_ad_name,:subject,:date_ticket)");
                
    $stmt->bindParam(':t_name'$user_name_ticket);
                
    $stmt->bindParam(':t_ad_name'$admin_name);
                
    $stmt->bindParam(':subject'$ticket_betreff);
                
    $stmt->bindParam(':date_ticket'$date_content);            
                if(
    $stmt->execute()){

                    
    $stmt $conn->prepare("SELECT TOP 1 * FROM $db_Ticket WHERE $db_Ticket.[ticket_creatorID] = :xname ORDER BY ticketID DESC");
                    
    $stmt->bindParam(':xname'$username);
                    
    #$stmt->bindParam(':xdate', $date_content);
                    
    if($stmt->execute()){
                        
    $row $stmt->fetch();
                        
    $lastTID $row['ticketID'];
                        
    $ticket_text_br nl2br($ticket_text_var);
                        
    $striped_text strip_tags($ticket_text_br,'<br><br/>');
                        
    file_put_contents('tickets/'.$lastTID.'.txt'$striped_text);
                        echo 
    'ticket_success';
                        return;
                    }else{echo 
    'ticket_failed';return;}
                }else{echo 
    'ticket_failed';return;}
            }else{echo 
    'ticket_failed';return;}
        }else{echo 
    'ticket_failed';return;} 
    die ersten beiden SQL funzen ohne probleme nur der letzte nicht
    auch wenn ich auf einen andere tabelle zugreifen will kappt es nicht
    weiß da jmd evtl ne Lösung

  • #2
    Moin,

    wenn du die If-Abfragen umstellst, musst du die Blöcke nicht so verschachteln.
    PHP-Code:
        $stmt $conn->prepare("SELECT TOP 1 COUNT(*) AS Anzahl FROM $db_Account WHERE $db_Account.[Name] = :xname AND $db_Account.[Password] = :xpass");
        
    $stmt->bindParam(':xname'$user_name_ticket);
        
    $stmt->bindParam(':xpass'$ticket_pass);
        if (!
    $stmt->execute()) {
            echo 
    'ticket_failed';

            return;
        }
        
    $row $stmt->fetch();
        if (!
    $row['Anzahl'] == 1) {
            echo 
    'ticket_failed';

            return;
        }
        
    $admin_name "work_status";
        
    $date_content date("d-m-Y");
        
    $stmt $conn->prepare("INSERT INTO $db_Ticket(ticket_creatorID,ticket_status,ticket_work_status,ticket_work_admin,ticket_subject,ticket_date) VALUES(:t_name,1,1,:t_ad_name,:subject,:date_ticket)");
        
    $stmt->bindParam(':t_name'$user_name_ticket);
        
    $stmt->bindParam(':t_ad_name'$admin_name);
        
    $stmt->bindParam(':subject'$ticket_betreff);
        
    $stmt->bindParam(':date_ticket'$date_content);
        if (!
    $stmt->execute()) {
            echo 
    'ticket_failed';

            return;
        }

        
    $stmt $conn->prepare("SELECT TOP 1 * FROM $db_Ticket WHERE $db_Ticket.[ticket_creatorID] = :xname ORDER BY ticketID DESC");
        
    $stmt->bindParam(':xname'$username);
        
    #$stmt->bindParam(':xdate', $date_content);
        
    if (!$stmt->execute()) {
            echo 
    'ticket_failed';

            return;
        }
        
    $row $stmt->fetch();
        
    $lastTID $row['ticketID'];
        
    $ticket_text_br nl2br($ticket_text_var);
        
    $striped_text strip_tags($ticket_text_br'<br><br/>');
        
    file_put_contents('tickets/' $lastTID '.txt'$striped_text);
        echo 
    'ticket_success';

        return; 
    Hast du schon Fehlermeldungen abgefragt?
    [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
    [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

    Kommentar


    • #3
      Ich bekomme ja keine Fehlermeldungen das ist ja das Problem ^^
      mein $row['ticketID'] ist einfach leer

      Kommentar


      • #4
        Was heisst "leer"? Nutze var_dump(); Was steht in $row?
        [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

        Kommentar


        • #5
          kann var_dump nicht nutzen da ich keine konsolenausgabe bekommen und in die txt lässt sichs nicht schreiben.

          Kommentar


          • #6
            Und wie wäre es mit dem ErrorLog? Da mal reinschauen.
            The string "()()" is not palindrom but the String "())(" is.

            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #7
              Habe es jetz eingegrentzt
              wenn ich WHERE $db_Ticket.[ticket_creatorID] = name rausnehme funktioniert es wies soll

              das ist aber finde ich keine permanente lösung das es verwechslung geben könnte wenn 2 oder mehrere user gelichzeitig ein ticket schreiben

              Kommentar


              • #8
                Mal geraten, gibt es die Variable $username vielleicht nicht? Zumindest weiter oben im Code wird $user_name_ticket genutzt
                [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
                [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

                Kommentar


                • #9
                  Und schon ins Error-Log geschaut, oder muss man erst mehrmals darum betteln?

                  Kommentar


                  • #10
                    bin ich auch schon drauf gekommen aber wenn ich dann
                    PHP-Code:
                    $username "bumbum94";
                                    
                    $stmt $conn->prepare("SELECT TOP 1 * FROM $db_Ticket WHERE $db.Ticket.[ticket_creatorID] = :xname ORDER BY ticketID DESC");
                                    
                    $stmt->bindParam(':xname'$username); 
                    oder
                    PHP-Code:
                                    $stmt $conn->prepare("SELECT TOP 1 * FROM $db_Ticket WHERE $db.Ticket.[ticket_creatorID] = 'bumbum94' ORDER BY ticketID DESC"); 
                    mach funzt es auch nicht

                    Kommentar


                    • #11
                      Aha. Dieses herumgerate bringt gar nichts. Entweder man debuggt struktuiert oder nicht. Kannst ja noch Jahre lang raten, aber alleine. Wenn du willst das wir dir helfen dann werde konkret:

                      Zitat von hellbringer Beitrag anzeigen
                      Und schon ins Error-Log geschaut, oder muss man erst mehrmals darum betteln?

                      Kannst ja zumindest mal die Query mit echo in PHP ausgeben lassen und per Copy / Paste auf der DB direkt laufen lassen usw.

                      PHP-Code:
                      $sql "SELECT TOP 1 * FROM $db_Ticket WHERE $db.Ticket.[ticket_creatorID] = 'bumbum94' ORDER BY ticketID DESC";
                      echo 
                      $sql// die hier direkt auf der DB auführen und schauen ob es Fehler gibt oder nicht
                      $stmt $conn->prepare($sql); 
                      Das übliche halt. Debuggen: https://php-de.github.io/jumpto/sql/

                      LG
                      The string "()()" is not palindrom but the String "())(" is.

                      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                      PHP.de Wissenssammlung | Kein Support per PN

                      Kommentar


                      • #12
                        "funzt nicht" ist keine brauchbare Fehlerbeschreibung. Wo bleibt das Debugging? Wann wird ins Error-Log geschaut? Willst du dein Problem überhaupt beheben oder dich nur im Forum ausjammern?

                        Kommentar


                        • #13
                          Du kannst dir auch ein eigenes Errorlog bauen: https://davidwalsh.name/custom-error-handling-php
                          [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

                          Kommentar


                          • #14
                            Zitat von hellbringer Beitrag anzeigen
                            "funzt nicht" ist keine brauchbare Fehlerbeschreibung. Wo bleibt das Debugging? Wann wird ins Error-Log geschaut? Willst du dein Problem überhaupt beheben oder dich nur im Forum ausjammern?
                            Zum rumjammern habe ich andere Leute aber danke ^^

                            "funzt nicht" allgemein gebräuchliche wortkombination für "Es oder Igrentetwas funktioniert nicht" (Tut mir leid wuste nicht das ich mir hier so gestochen ausdrücken muss aber bitte.

                            Bei Verwendung einer der beidne oben geschrieben Syntax wird der Code zwar fehlerfrei durchgeführt aber die Variable wird nicht mit dem gewünschten Wert befüllt. also kurz und knapp "FUNZT NICHT"

                            Vielen dank für die unnötige Abnutzung meiner Tastaur und die 3 minuten Zeitverschwendung die ich für diesen Beitrag aufgewendet habe.

                            Ich geh jetz wo anders "rumheulen"


                            Thema kann geschlossen werden
                            Tschö mit Ö

                            Kommentar


                            • #15
                              "funzt nicht" allgemein gebräuchliche wortkombination für "Es oder Igrentetwas funktioniert nicht" (Tut mir leid wuuste ncit das ich mir hier so gestochen ausdrücken muss aber bitte.
                              Dann hättest du die gleiche Antwort bekommen: Das ist keine Fehlerbeschreibung.

                              Bei Verwendung einer der beidne oben geschrieben Syntax führ er den Code zwar fehlerfrei durch aber befüllt mir die Variable nicht mit dem gewünschten Wert. aöso kurz und knapp "FUNZT NICHT"
                              Hast du dein SQL-Statement denn schonmal direkt zur Datenbank gesendet, ohne PHP?
                              Gibt es überhaupt einen passenden Datensatz?

                              Sind halt alles Sachen die wir nicht wissen können.
                              Die letzte Frage wäre noch, ob es denn richtig ist, dass du ein ID-Feld nach einem Namen durchsuchst - sieht seltsam aus, passiert aber ab und zu, dass die Bezeichner einfach für Außenstehende verwirrend sind.
                              [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
                              [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

                              Kommentar

                              Lädt...
                              X