Ankündigung

Einklappen
Keine Ankündigung bisher.

SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

Einklappen

Neue Werbung 2019

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

  • SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

    Hallo,

    Ich bekomme beim Update eines Textes folgenden Fehler:SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

    Kann mir hier jemand helfen?

    PHP-Code:
    <?php
        $userid 
    $_SESSION['UserID'];
    // Prüfen ob Admin oder nicht
    if(!isset($_SESSION['Rechte']) OR !in_array('Adminbereich' $_SESSION['Rechte']))

        
    // Userbereich
        
    die("<meta http-equiv='refresh' content='0; URL=../startseite'>");
    }
    else


        
    define("UPLOAD_DIR""/var/www/vhosts/xxx/httpdocs/images/blog/"); // Upload Ordner eintragen

        
    try {
            
    // Hier bitte Datenbank Daten eingeben, wenn vorher die DB benötigt wird schon verschieben und Rest anpassen
            
    $db = new PDO('mysql:host=localhost;dbname=xxx''xxx''xxx', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
        }
        catch(
    PDOException $ex) {
            echo 
    $ex->getMessage();
            
    // Hier eventuell Logging des Fehlers einbauen
        
    }

        
    // Adminbereich 
        
    if(isset($_GET['texte']))
        {
            if(
    $_GET['texte'] == 'edit'// Einen Artikel bearbeiten
            
    {
                
    $id $_GET['id'];
                include_once(
    "./fckeditor/fckeditor.php");
                try {
                    
    $stmt $db->prepare("SELECT id, titel, titel_pic, erstellt, klicks, user, meta_titel,meta_beschreibung, meta_keywords,text  FROM blog WHERE id=:id");
                    
    $stmt->bindValue(':id'$idPDO::PARAM_INT);
                    
    $stmt->execute();
                    
    $row $stmt->fetchObject();
                    echo 
    "<fieldset><legend>Bearbeiten eines Blogeintrags</legend>
                    <form enctype='multipart/form-data' action='index.php?seite=news_edit&texte=submit&amp;id=
    {$row->id}' method='post'>
                    <input type='hidden' name='id' value='
    {$row->id}'>
                    <label for='titel'>Titel:</label><br><input type='text' id='titel' name='titel' size='90' value='
    {$row->titel}'><br>
                    <label for='meta_beschreibung'>meta_beschreibung:</label><br><input type='text' id='meta_beschreibung' name='meta_beschreibung' size='90' value='
    {$row->meta_beschreibung}'><br>
                    <label for='meta_keywords'>meta_keywords:</label><br><input type='text' id='meta_keywords' name='meta_keywords' size='90' value='
    {$row->meta_keywords}'><br>
                    <label for='meta_titel'>meta_titel:</label><br><input type='text' id='meta_titel' name='meta_titel' size='90' value='
    {$row->meta_titel}'><hr>
                    <label for='titel_pic'>Bild:</label><br><input type='text' id='titel_pic' name='titel_pic' size='90' value='
    {$row->titel_pic}'><br>
                    <label for='datei'>Bilddatei:</label><br><input type='file' id='datei' name='datei'><hr>
                    <label for='user'>User:</label><br><input type='text' id='user' name='user' size='90' value='
    $_SESSION[UserID]'><br>


                    </fieldset>"
    ;

                    
    $oFCKeditor = new FCKeditor('inhalt');
                    
    $oFCKeditor->Width '50%';
                    
    $oFCKeditor->Height '350'
                    
    $oFCKeditor->BasePath '/fckeditor/';
                    
    $oFCKeditor->Value $row->text;    
                    
    $oFCKeditor->Create();

                    echo 
    "<br><input type='submit' value='&auml;ndern'></form>";
                }
                catch(
    PDOException $ex)
                {
                    echo 
    $ex->getMessage();
                }

            }
            elseif(
    $_GET['texte'] == 'submit'// Einen Artikel Updaten/Speichern
            
    {

                 
    $user $_SESSION["UserID"];
                try {
                    
    $stmt $db->prepare("UPDATE blog SET titel=:titel, text=:text, titel_pic=:titel_pic, erstellt=:erstellt, user=:user, meta_titel=:meta_titel , meta_beschreibung=:meta_beschreibung, meta_keywords=:meta_keywords WHERE id=:id");
                    
    $stmt->bindValue(':titel'$_POST["titel"], PDO::PARAM_STR);
                    
    $stmt->bindValue(':subtitel'$_POST["subtitel"], PDO::PARAM_STR);

                    
    /**
                    * Image Upload Routine: titel_pic Parameter binden entweder mit dem alten Wert oder einem neuen Bild
                    */
                    
    $allowedExtensions=array(IMAGETYPE_GIFIMAGETYPE_JPEG);; // Erlaubte Bildformate ... Gif+JPG zurzeit
                    
    try {

                        if(
    $_FILES['datei']['size']>0){ // Neues Bild hochgeladen, ansonsten einfach den Standardwert nehmen (titel_pic)

                            
    if($_FILES['datei']['size'] >= 1024000){
                                throw new 
    Exception("Das Bild darf nicht größer als 100KB sein.");
                            }

                            
    $dateityp GetImageSize($_FILES['datei']['tmp_name']); 
                            if(!
    in_array($dateityp[2],$allowedExtensions)){
                                throw new 
    Exception("Das Bild liegt in einem nicht erlaubten Bildformat vor.");
                            }

                            if(
    $_FILES['datei']['error']>0){
                                throw new 
    Exception("Es ist ein Fehler beim Upload aufgetreten: " $_FILES['datei']['error']);
                            }

                            
    $name preg_replace("/[^A-Z0-9._-]/i""_"$_FILES['datei']['name']); // Unerlaubte Zeichen im Dateinamen filtern

                            // Überschreiben unmöglich machen durch neuen Namen
                            
    $i 0;
                            
    $parts pathinfo($name);
                            while (
    file_exists(UPLOAD_DIR $name)) {
                                
    $i++;
                                
    $name $parts["filename"] . "-" $i "." $parts["extension"];
                            }

                            
    // preserve file from temporary directory
                            
    $success move_uploaded_file($_FILES['datei']['tmp_name'], UPLOAD_DIR $name);
                            if (!
    $success) { 
                                throw new 
    Exception("Datei konnte nicht gespeichert werden im Upload Ordner.");
                            }

                        }
                        else 
    // Kein neues Bild hochgeladen
                        
    {
                            
    $name $_POST["titel_pic"];
                        }
                    }
                    catch(
    Exception $ex)
                    {
                        echo 
    $ex->getMessage();
                        
    $name $_POST["titel_pic"]; // Fallback auf den alten Wert wenn das neue Bild nicht funktioniert
                    
    }

                    
    $stmt->bindValue(':titel_pic'$namePDO::PARAM_STR);
                    
    $stmt->bindValue(':user'$_POST["user"], PDO::PARAM_STR);
                    
    $stmt->bindValue(':meta_titel'$_POST["meta_titel"], PDO::PARAM_STR);
                    
    $stmt->bindValue(':meta_beschreibung'$_POST["meta_beschreibung"], PDO::PARAM_STR);
                    
    $stmt->bindValue(':meta_keywords'$_POST["meta_keywords"], PDO::PARAM_STR);
                    
    $stmt->bindValue(':text'$_POST["inhalt"], PDO::PARAM_STR);
                    
    $stmt->bindValue(':id'$_POST["id"], PDO::PARAM_INT);

                    
    $stmt->execute();

                    echo 
    "<div style='font-color:#008000;font-weight:bold;margin-bottom:20px'>Die &Auml;nderung wurde erfolgreich durchgef&uuml;hrt.</div>"
                }
                catch(
    PDOException $ex)
                {
                    echo 
    $ex->getMessage();
                }
            }


        }
    }

    ?>


    <ul style="list-style-type:none;margin:0px;padding:0px">
        <?php
        
    foreach($db->query("SELECT id, titel, erstellt, user FROM blog") as $row)
        {
            echo 
    "<li><a class=\"edit\" href=\"index.php?seite=news_edit&texte=edit&amp;id={$row['id']}\" title=\"Update der Texte\" ></a>";
            echo 
    "<b>{$row['titel']}</b><br>";
            echo 
    "&Auml;nderung: {$row['erstellt']} ";
            echo 
    "von: {$row['user']}</li>";
        }
        
    ?>
    </ul>
    Vielen Dank


  • #2
    Steht doch dort: parameter was not defined
    Du bindest einen Parameter der in der Query nicht existiert.
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      Request-Parameter sind immer Strings, du übergibst den String $_POST['id'], sagst PDO aber es sei ein Integer. PDO meckert und bricht ab. (fast am Ende des Scripts)
      Zitat von derwunner
      "Ein FISI ist auf gut-deutsch der Netzwerker. Das heißt Du gehst rauß zum Kunden oder auf die Straße und verlegst Leitungen" - derwunner 2015

      Kommentar


      • #4
        Zitat von CrocoBlack Beitrag anzeigen
        Request-Parameter sind immer Strings, du übergibst den String $_POST['id'], sagst PDO aber es sei ein Integer. PDO meckert und bricht ab. (fast am Ende des Scripts)
        PHP ist da gänzlich schmerzfrei, auch wenn es eine String Zahl ist.

        Das Problem ist beim UPDATE.
        Mindestens zu ":erstellt" gibt es kein "bindValue"
        Vieles kann, wenig muss.

        Kommentar


        • #5
          Zitat von Varon Beitrag anzeigen
          PHP ist da gänzlich schmerzfrei, auch wenn es eine String Zahl ist.

          Das Problem ist beim UPDATE.
          Mindestens zu ":erstellt" gibt es kein "bindValue"
          Oh okay. Bin aus irgendeinem Grund davon ausgegangen, dass PDO da genauso penibel ist wie ZF1.
          Zitat von derwunner
          "Ein FISI ist auf gut-deutsch der Netzwerker. Das heißt Du gehst rauß zum Kunden oder auf die Straße und verlegst Leitungen" - derwunner 2015

          Kommentar

          Lädt...
          X