tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
Like Tree1Danke
ERLEDIGT
NEIN
ANTWORTEN
17
ZUGRIFFE
401
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Gut. Was ist laut Doku der 2te Paramter bei mysqli-stmt-bind-param()? Jepp, auch den hast du vergessen.

    Procedural style:

    bool mysqli_stmt_bind_param ( mysqli_stmt $stmt , string $types , mixed &$var1 [, mixed &$... ] )

    ...

    Parameter-Liste

    stmt
    Nur bei prozeduralem Aufruf: ein von mysqli_stmt_init() zurückgegebens Statementobjekt.

    types
    A string that contains one or more characters which specify the types for the corresponding bind variables:

    Type specification chars Character Description
    i corresponding variable has type integer
    d corresponding variable has type double
    s corresponding variable has type string
    b corresponding variable is a blob and will be sent in packets


    var1
    The number of variables and length of string types must match the parameters in the statement.
    Nachtrag:
    Ps. Ich habe noch nie mit mysqli gearbeitet - aber ich schaue mir die Doku an und sehe was an welcher Stelle verlangt wird
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  2. #17
    Big-A Big-A ist offline Mitglied Bronze
    Registriert seit
    Jan 2012
    Beiträge
    45
    Ja ich habe leider noch verständniss Porbleme, da ich ein absoluter Anfänger bin
    Aber ich will es halt lernen...

    Vielleicht kannst du mir ja noch mal helfen, nun werden mir keine Fehlermeldungen mehr angegeben, jedoch werden die geänderten Daten nicht gespeichert.

    PHP-Code:
     if(isset($_POST["speichern"])){
                            
        
    //das Statement vorbereiten, somit werden eigentlich nur die Daten zurückgeschicktn, die verändert wurden.
            
    $stmt mysqli_prepare($res'UPDATE Kundendaten SET ID="?", Firma="?", Nachname="?", Vorname="?", Strasse="?", Hausnummer="?", PLZ="?", Ort="?", Telefonnummer="?", Fax="?", Mail="?", Datum="?" WHERE (ID ="?")');
                
                
    //Parameter daran binden
            
    mysqli_bind_param($stmt,'sssssssssssss'$Firma$Nachname$Vorname$Strasse$Hausnummer$PLZ$Ort$Telefonnummer$Fax$Mail$Datum);    
                
             
                
    $ID$_POST["ID"];
                
    $Firma$_POST["Firma"]; 
                
    $Nachname $_POST["Nachname"];
                
    $Vorname $_POST["Vorname"];
                
    $Strasse $_POST["Strasse"];
                
    $Hausnummer $_POST["Hausnummer"];
                
    $PLZ $_POST["PLZ"];
                
    $Ort $_POST["Ort"];
                
    $Telefonnummer $_POST["Telefonnummer"];
                
    $Fax $_POST["Fax"];
                
    $Mail $_POST["Mail"];
                
    $Datum $_POST["Datum"]; $Firma$_POST["Firma"]; 
        
                
                
    //prepared ausführen
                
    mysqli_execute($stmt);
                
                
    //statement schließen
                #mysqli_stmt_close();
                
                
    mysqli_query($stmt);
                
                
            include(
    "Abfrage.php"); //öffnen die if-abfragen, wegen der Formularfelder
                    
            //verhindert gewünschte Sonderzeichen
            
    $ID preg_replace('/(<|>)/'''$ID); 
            
    $Firma preg_replace('/(<|>)/'''$Firma); 
            
    $Nachname preg_replace('/(<|>)/'''$Nachname); 
            
    $Vorname preg_replace('/(<|>)/'''$Vorname); 
            
    $Strasse preg_replace('/(<|>)/'''$Strasse); 
            
    $Hausnummer preg_replace('/(<|>)/'''$Hausnummer); 
            
    $PLZ preg_replace('/(<|>)/'''$PLZ); 
            
    $Ort preg_replace('/(<|>)/'''$Ort);
            
    $Telefonnummer preg_replace('/(<|>)/'''$Telefonnummer); 
            
    $Fax preg_replace('/(<|>)/'''$Fax); 
            
    $Mail preg_replace('/(<|>)/'''$Mail); 
            
    $Datum preg_replace('/(<|>)/'''$Datum); }
                    
        
    //Verbindung schließen
        
    mysqli_close($res); 
     

  3. #18
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    item: Warum definierst du 13 Strings wo du doch 'nur' 11 Parameter hast?

    item: Schau nochmals das Beispiel in der Doku an. Mit dem 2ten Parameter übergibst du dem mysqli um was für ein Typ es sich handelt. Dann musst du im SQL die ? nicht noch zusätzlich in "" setzen. Das macht mysqli für dich

    item: Warum ist dein erstes und letztes ? im SQL die id, bei mysqli_bind_param() aber nicht mehr. Ergo auch die ID übergeben

    item: Die id wird numerisch sein. also auch so behandeln

    item: Warum setzt du auf der letzten Zeile wo du die Variable $datum abfüllst auch nochmals die $Firma ab?

    item: Wenn du ein Update mit dem Schlüssel ID durchführst, musst du die ID nicht mehr überschreiben

    Code php:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    
    $sql = <<<SQL
    UPDATE 
        Kundendaten 
    SET 
        Firma = ?, 
        Nachname = ?, 
        Vorname = ?, 
        Strasse = ?, 
        Hausnummer = ?, 
        PLZ = ?,
        Ort = ?, 
        Telefonnummer = ?, 
        Fax = ?, 
        Mail = ?, 
        Datum = ? 
    WHERE 
        ID = ?
    SQL;
     
    $stmt = mysqli_prepare($res, $sql);
                
    mysqli_bind_param($stmt,'sssssssssssi', 
        $Firma, 
        $Nachname, 
        $Vorname, 
        $Strasse, 
        $Hausnummer, 
        $PLZ, 
        $Ort, 
        $Telefonnummer, 
        $Fax, 
        $Mail, 
        $Datum, 
        $ID
    );
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

Ähnliche Themen

  1. Fatal Error
    Von Sasser im Forum PHP
    Antworten: 4
    Letzter Beitrag: 18.01.11, 23:01
  2. error LNK2019 & fatal error LNK1120
    Von HORNSWOGGLE im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 24.11.09, 16:31
  3. Möglich einen Fatal Error abzufangen und darzustellen?
    Von ThirdKeeper im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 4
    Letzter Beitrag: 10.01.09, 11:45
  4. Fatal Error
    Von Soapp im Forum PHP
    Antworten: 2
    Letzter Beitrag: 15.10.06, 19:49

Stichworte