Rumah  >  Soal Jawab  >  teks badan

SQLSTATE: Bilangan argumen tidak sah: Bilangan pembolehubah ikatan tidak sepadan dengan bilangan token, baris 102

<p>Saya menerima ralat SQLSTATE[HY093]: Bilangan pembolehubah ikatan tidak sepadan dengan bilangan token, di bawah baris 102 ulasan.php: </p> <pre class="brush:php;toolbar:false;"><?php /*** Kelas untuk memproses artikel*/ Komen kelas { // Atribut /*** ID artikel @var int dalam pangkalan data*/ awam $id = null; /*** @var int Tarikh artikel akan/telah diterbitkan*/ awam $publicationDate = null; /*** @var string Tajuk penuh artikel*/ awam $title = null; /*** @var string kandungan HTML artikel*/ public $content = null; /*** ID artikel @var int dalam pangkalan data*/ awam $articleid = null; /*** Tetapkan sifat objek menggunakan nilai dalam tatasusunan yang disediakan * * Nilai atribut assoc @param*/ fungsi awam __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']; } /*** Tetapkan sifat objek menggunakan nilai POST borang edit * * @param assoc membentuk nilai POST*/ kedai fungsi awamFormValues( $params ) { // simpan semua parameter $this->__construct( $params ); // Parsing dan simpan tarikh keluaran if ( isset($params['publicationDate']) ) { $publicationDate = meletup ( '-', $params['publicationDate'] ); if ( count($publicationDate) == 3 ) { senarai ($y, $m, $d ) = $publicationDate; $this->publicationDate = mktime (0, 0, 0, $m, $d, $y); } } } fungsi statik awam getById( $id ) { $conn = PDO baharu( DB_DSN, DB_USERNAME, DB_PASSWORD ); $sql = "SELECT *, UNIX_TIMESTAMP(publicationDate) AS publicationDate 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 ); }/*** Kembalikan semua (atau julat tertentu) objek artikel dalam pangkalan data * * @param int pilihan Bilangan baris untuk dikembalikan (lalai adalah semua) * Lajur pilihan rentetan @param mengikut artikel yang diisih (lalai ialah "publicationDate DESC") * @return Array|false Tatasusunan yang mengandungi dua elemen: hasil => tatasusunan, senarai objek artikel totalRows => jumlah bilangan artikel*/ fungsi statik awam getList( $art=1, $order="publicationDate DESC", $numRows=10000 ) { $conn = PDO baharu( DB_DSN, DB_USERNAME, DB_PASSWORD ); $sql = "SELECT SQL_CALC_FOUND_ROWS *, UNIX_TIMESTAMP(publicationDate) AS publicationDate FROM comments WHERE articleid = :art PESANAN OLEH " . mysql_escape_string($order) . " LIMIT :numRows"; $st = $conn->prepare( $sql ); $st->bindValue( ":art", $art, PDO::PARAM_INT ); $st->execute(); $list = array(); manakala ( $row = $st->fetch() ) { $komen = Komen baharu( $baris ); $senarai[] = $komen; } } /*** Masukkan objek artikel semasa ke dalam pangkalan data dan tetapkan atribut IDnya.*/ sisipan fungsi awam () { // 插入文章 $conn = PDO baharu( DB_DSN, DB_USERNAME, DB_PASSWORD ); $sql = "INSERT INTO comments ( publicationDate, title, content, articledid ) NILAI ( FROM_UNIXTIME(: publicationDate), :title, :content, :articleid )"; $st = $conn->sediakan ( $sql ); $st->bindValue( ":publicationDate", $this->publicationDate, PDO::PARAM_INT ); $st->bindValue( ":tajuk", $ini->tajuk, 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; } /** * 在数据库中更新当前的文章对象。*/ kemas kini fungsi awam() { // 更新文章 $conn = PDO baharu( DB_DSN, DB_USERNAME, DB_PASSWORD ); $sql = "KEMASKINI ulasan SET publicationDate=FROM_UNIXTIME(:publicationDate), title=:title, summary=:summary, content=:content, articleid=:articleid,imageExtension=:imageExtension WHERE id = :id"; $st = $conn->sediakan ( $sql ); $st->bindValue( ":publicationDate", $this->publicationDate, PDO::PARAM_INT ); $st->bindValue( ":tajuk", $ini->tajuk, 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; } /*** Padamkan objek artikel semasa daripada pangkalan data.*/ fungsi awam padam() { // 删除文章 $conn = PDO baharu( 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; } } ?></pra> <p><br /></p>
P粉386318086P粉386318086400 hari yang lalu370

membalas semua(1)saya akan balas

  • P粉724256860

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

    Anda tidak mengikat semua ikatan di sini

    $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 );

    Anda mengisytiharkan pengikatan yang dipanggil :numRows, tetapi anda sebenarnya tidak mengikat apa-apa padanya.

    balas
    0
  • Batalbalas