suchen

Heim  >  Fragen und Antworten  >  Hauptteil

SQLSTATE: Ungültige Anzahl von Argumenten: Die Anzahl der Bindevariablen stimmt nicht mit der Anzahl der Token überein, Zeile 102

<p>Ich habe den SQLSTATE[HY093]-Fehler erhalten: Die Anzahl der Bindevariablen stimmt nicht mit der Anzahl der Token überein, unter Zeile 102 von comments.php: </p> <pre class="brush:php;toolbar:false;"><?php /*** Klasse zur Bearbeitung von Artikeln*/ Klasse Kommentar { // Attribute /*** @var int Artikel-ID in der Datenbank*/ öffentliche $id = null; /*** @var int Das Datum, an dem der Artikel veröffentlicht wird/wurde*/ public $publicationDate = null; /*** @var string Der vollständige Titel des Artikels*/ public $title = null; /*** @var string HTML-Inhalt des Artikels*/ public $content = null; /*** @var int Artikel-ID in der Datenbank*/ public $articleid = null; /*** Legen Sie die Eigenschaften des Objekts mithilfe der Werte im bereitgestellten Array fest * * @param assoc-Attributwert*/ öffentliche Funktion __construct( $data=array() ) { if ( isset( $data['id'] ) ) $this->id = (int) $data['id']; if ( isset( $data['publicationDate'] ) ) $this->publicationDate = (int) $data['publicationDate']; if ( isset( $data['title'] ) ) $this->title = preg_replace ("/[^.,-_'"@?!:$ a-zA-Z0-9()]/", "", $data['title'] ); if ( isset( $data['content'] ) ) $this->content = $data['content']; if ( isset( $data['articleid'] ) ) $this->articleid = (int) $data['articleid']; } /*** Legen Sie die Eigenschaften des Objekts mithilfe des POST-Werts des Bearbeitungsformulars fest * * @param assoc form POST-Wert*/ öffentliche Funktion storeFormValues( $params ) { // alle Parameter speichern $this->__construct( $params ); // Veröffentlichungsdatum analysieren und speichern if ( isset($params['publicationDate']) ) { $publicationDate = explosion ( '-', $params['publicationDate'] ); if ( count($publicationDate) == 3 ) { list ( $y, $m, $d ) = $publicationDate; $this->publicationDate = mktime (0, 0, 0, $m, $d, $y); } } } öffentliche statische Funktion getById( $id ) { $conn = neues PDO( DB_DSN, DB_USERNAME, DB_PASSWORD ); $sql = "SELECT *, UNIX_TIMESTAMP(publicationDate) ASpublicationDate FROM comments WHERE id = :id"; $st = $conn->prepare( $sql ); $st->bindValue( ":id", $id, PDO::PARAM_INT ); $st->execute(); $row = $st->fetch(); $conn = null; if ( $row ) return new Comment( $row ); }/*** Gibt alle (oder einen bestimmten Bereich von) Artikelobjekten in der Datenbank zurück * * @param int optional Anzahl der zurückzugebenden Zeilen (Standard ist alle) * @param string optionale Spalte, nach der Artikel sortiert werden (Standard ist „publicationDate DESC“) * @return Array|false Ein Array mit zwei Elementen: results => array, eine Liste von Artikelobjekten; totalRows => Gesamtzahl der Artikel*/ öffentliche statische Funktion getList( $art=1, $order="publicationDate DESC", $numRows=10000 ) { $conn = neues PDO( DB_DSN, DB_USERNAME, DB_PASSWORD ); $sql = "SELECT SQL_CALC_FOUND_ROWS *, UNIX_TIMESTAMP(publicationDate) ASpublicationDate FROM comments WHERE Articleid = :art ORDER BY " . mysql_escape_string($order) . " LIMIT :numRows"; $st = $conn->prepare( $sql ); $st->bindValue( ":art", $art, PDO::PARAM_INT ); $st->execute(); $list = array(); while ( $row = $st->fetch() ) { $comments = neuer Kommentar( $row ); $list[] = $comment; } } /*** Fügen Sie das aktuelle Artikelobjekt in die Datenbank ein und legen Sie sein ID-Attribut fest.*/ öffentliche Funktion insert() { // 插入文章 $conn = neues PDO( DB_DSN, DB_USERNAME, DB_PASSWORD ); $sql = „INSERT INTO comments (publicationDate, title, content, Articledid) VALUES ( FROM_UNIXTIME(:publicationDate), :title, :content, :articleid )“; $st = $conn->prepare ( $sql ); $st->bindValue( ":publicationDate", $this->publicationDate, PDO::PARAM_INT ); $st->bindValue( ":title", $this->title, PDO::PARAM_STR ); $st->bindValue( ":content", $this->content, PDO::PARAM_STR ); $st->bindValue( ":articleid", $this->articleid, PDO::PARAM_STR ); $st->execute(); $this->id = $conn->lastInsertId(); $conn = null; } /** * 在数据库中更新当前的文章对象.*/ öffentliche Funktion update() { // 更新文章 $conn = neues PDO( DB_DSN, DB_USERNAME, DB_PASSWORD ); $sql = „Kommentare aktualisieren SETpublicationDate=FROM_UNIXTIME(:publicationDate), title=:title, summary=:summary, content=:content, Articleid=:articleid,imageExtension=:imageExtension WHERE id = :id“; $st = $conn->prepare ( $sql ); $st->bindValue( ":publicationDate", $this->publicationDate, PDO::PARAM_INT ); $st->bindValue( ":title", $this->title, PDO::PARAM_STR ); $st->bindValue( ":content", $this->content, PDO::PARAM_STR ); $st->bindValue( ":articleid", $this->articleid, PDO::PARAM_STR ); $st->bindValue( ":id", $this->id, PDO::PARAM_INT ); $st->execute(); $conn = null; } /*** Löschen Sie das aktuelle Artikelobjekt aus der Datenbank.*/ öffentliche Funktion delete() { // 删除文章 $conn = neues PDO( DB_DSN, DB_USERNAME, DB_PASSWORD ); $st = $conn->prepare ( "DELETE FROM comments WHERE id = :id LIMIT 1" ); $st->bindValue( ":id", $this->id, PDO::PARAM_INT ); $st->execute(); $conn = null; } } ?></pre> <p><br /></p>
P粉386318086P粉386318086493 Tage vor506

Antworte allen(1)Ich werde antworten

  • P粉724256860

    P粉7242568602023-08-18 11:09:56

    您没有在此处绑定所有的绑定

    $sql = "UNIX_TIMESTAMP(publicationDate) AS publicationDate
            FROM comments WHERE articleid = :art 
            ORDER BY some LIMIT :numRows";
    
    $st = $conn->prepare( $sql );
    $st->bindValue( ":art", $art, PDO::PARAM_INT );

    您声明了一个名为:numRows的绑定,但您实际上没有将任何内容绑定到它上面。

    Antwort
    0
  • StornierenAntwort