SQLSTATE: Ungültige Anzahl von Argumenten: Die Anzahl der Bindevariablen stimmt nicht mit der Anzahl der Token überein, Zeile 102
P粉386318086
2023-08-17 20:03:40
<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>
您没有在此处绑定所有的绑定
您声明了一个名为:numRows的绑定,但您实际上没有将任何内容绑定到它上面。