ホームページ  >  に質問  >  本文

SQLSTATE: 引数の数が無効です: バインド変数の数がトークンの数と一致しません、102 行目

<p>SQLSTATE[HY093] エラーを受け取りました: comments.php の 102 行目以下に、バインド変数の数がトークンの数と一致しません。 <pre class="brush:php;toolbar:false;"><?php /*** 記事を処理するためのクラス*/ クラス コメント { // 属性 /*** @var int データベース内の記事 ID*/ パブリック $id = null; /*** @var int 記事が公開される/公開された日付*/ パブリック $publicationDate = null; /*** @var string 記事の完全なタイトル*/ パブリック $title = null; /*** @var string 記事のHTMLコンテンツ*/ パブリック $content = null; /*** @var int データベース内の記事 ID*/ パブリック $articleid = null; /*** 提供された配列の値を使用してオブジェクトのプロパティを設定します * * @param assoc 属性値*/ パブリック関数 __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']; } /*** 編集フォームのPOST値を使用してオブジェクトのプロパティを設定します * * @param assoc フォームの POST 値*/ パブリック関数storeFormValues( $params ) { // すべてのパラメータを保存する $this->__construct( $params ); // リリース日を解析して保存する if ( isset($params['publicationDate']) ) { $publicationDate =explode ( '-', $params['publicationDate'] ); if ( count($publicationDate) == 3 ) { リスト ( $y, $m, $d ) = $publicationDate; $this->publicationDate = mktime (0, 0, 0, $m, $d, $y); } } } パブリック静的関数 getById( $id ) { $conn = 新しい PDO( DB_DSN, DB_USERNAME, DB_PASSWORD ); $sql = "SELECT *, UNIX_TIMESTAMP(publicationDate) AS PublicationDate FROM コメント WHERE id = :id"; $st = $conn->prepare( $sql ); $st->bindValue( ":id", $id, PDO::PARAM_INT ); $st->execute(); $row = $st->fetch(); $conn = null; if ( $row ) は新しい Comment( $row ) を返します。 }/*** データベース内のすべて (または特定の範囲の) 記事オブジェクトを返します。 * * @param int オプション 返す行数 (デフォルトはすべて) * @param string 記事のソートに応じたオプションの列 (デフォルトは「publicationDate DESC」) * @return Array|false 2 つの要素を含む配列: results => 配列、記事オブジェクトのリスト; totalRows => 記事の総数*/ パブリック静的関数 getList( $art=1, $order="publicationDate DESC", $numRows=10000 ) { $conn = 新しい PDO( DB_DSN, DB_USERNAME, DB_PASSWORD ); $sql = "SELECT SQL_CALC_FOUND_ROWS *, UNIX_TIMESTAMP(publicationDate) AS PublicationDate FROM コメント WHERE 記事 ID = :art ORDER BY " .mysql_escape_string($order) . " LIMIT :numRows"; $st = $conn->prepare( $sql ); $st->bindValue( ":art", $art, PDO::PARAM_INT ); $st->execute(); $list = 配列(); while ( $row = $st->fetch() ) { $comments = 新しいコメント( $row ); $list[] = $コメント; } } /*** 現在の記事オブジェクトをデータベースに挿入し、その ID 属性を設定します。*/ パブリック関数 insert() { // 插入文章 $conn = 新しい PDO( DB_DSN, DB_USERNAME, DB_PASSWORD ); $sql = "コメント (出版日、タイトル、コンテンツ、記事 ID ) に挿入 値 (FROM_UNIXTIME(:出版日)、:タイトル、:コンテンツ、:記事 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->execute(); $this->id = $conn->lastInsertId(); $conn = null; } /** * データベース内の現在の文章オブジェクトが更新されます。*/ パブリック関数 update() { //更新文章 $conn = 新しい PDO( DB_DSN, DB_USERNAME, DB_PASSWORD ); $sql = "コメントを更新 SET PublicationDate=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; } /*** 現在の記事オブジェクトをデータベースから削除します。*/ パブリック関数 delete() { // 删除文章 $conn = 新しい PDO( DB_DSN, DB_USERNAME, DB_PASSWORD ); $st = $conn->prepare ( "コメント WHERE id = :id LIMIT 1 から削除" ); $st->bindValue( ":id", $this->id, PDO::PARAM_INT ); $st->execute(); $conn = null; } } ?></pre> <p><br /></p>
P粉386318086P粉386318086451日前459

全員に返信(1)返信します

  • P粉724256860

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

    ここではすべてのバインディングをバインドしているわけではありません

    リーリー

    :numRows というバインディングを宣言していますが、実際には何もバインドしていません。

    返事
    0
  • キャンセル返事