>  Q&A  >  본문

SQLSTATE: 잘못된 인수 개수: 바인드 변수 개수가 토큰 개수와 일치하지 않습니다. 102행

<p>SQLSTATE[HY093] 오류가 발생했습니다. comments.php의 102번째 줄 아래에 있는 바인드 변수 수가 토큰 수와 일치하지 않습니다. </p> <pre class="brush:php;toolbar:false;"><?php /*** 물품 가공 클래스*/ 수업 코멘트 { // 속성 /*** @var int 데이터베이스의 기사 ID*/ 공개 $id = null; /*** @var int 기사가 게시될 날짜/게시될 날짜*/ 공개 $publicationDate = null; /*** @var string 기사의 전체 제목*/ 공개 $제목 = null; /*** @var string 기사의 HTML 콘텐츠*/ 공개 $content = null; /*** @var int 데이터베이스의 기사 ID*/ 공개 $articleid = null; /*** 제공된 배열의 값을 사용하여 개체의 속성을 설정합니다. * * @param 연관 속성 값*/ 공개 함수 __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 = 폭발( '-', $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 출판 날짜 FROM 댓글 WHERE id = :id"; $st = $conn->준비( $sql ); $st->bindValue( ":id", $id, PDO::PARAM_INT ); $st->실행(); $row = $st->fetch(); $콘 = 널; if ( $row ) 새 주석 반환( $row ); }/*** 데이터베이스의 모든(또는 특정 범위) 기사 개체를 반환합니다. * * @param int 선택 사항 반환할 행 수(기본값은 모두) * @param string 기사 정렬에 따른 선택적 열(기본값은 "publicationDate DESC") * @return Array|false 두 요소를 포함하는 배열: 결과 => 배열, 기사 개체 목록 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 출판 날짜 FROM 댓글 WHERE 기사 ID = :art ORDER BY " . mysql_escape_string($order) . " LIMIT :numRows"; $st = $conn->준비( $sql ); $st->bindValue( ":art", $art, PDO::PARAM_INT ); $st->실행(); $목록 = 배열(); while ( $row = $st->fetch() ) { $comments = 새 댓글( $row ); $list[] = $주석; } } /*** 현재 기사 개체를 데이터베이스에 삽입하고 해당 ID 속성을 설정합니다.*/ 공개 함수 삽입() { // 插入文章 $conn = 새 PDO( DB_DSN, DB_USERNAME, DB_PASSWORD ); $sql = "댓글 삽입( 출판 날짜, 제목, 콘텐츠, 기사 ID ) VALUES( FROM_UNIXTIME(:publicationDate), :title, :content, :articleid )"; $st = $conn->준비 ( $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->실행(); $this->id = $conn->lastInsertId(); $콘 = 널; } /** * 에서 数据库中更新当前文章对象。*/ 공개 함수 업데이트() { // 更新文章 $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->준비 ( $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->실행(); $콘 = 널; } /*** 데이터베이스에서 현재 기사 개체를 삭제합니다.*/ 공개 함수 삭제() { //删除文章 $conn = 새 PDO( DB_DSN, DB_USERNAME, DB_PASSWORD ); $st = $conn->prepare ( "ID = :id LIMIT 1인 곳에서 댓글에서 삭제" ); $st->bindValue( ":id", $this->id, PDO::PARAM_INT ); $st->실행(); $콘 = 널; } } ?></pre> <p><br /></p>
P粉386318086P粉386318086451일 전460

모든 응답(1)나는 대답할 것이다

  • P粉724256860

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

    여기서 모든 바인딩을 바인딩하지 않았습니다

    으아악

    :numRows라는 바인딩을 선언했지만 실제로는 아무것도 바인딩하지 않았습니다.

    회신하다
    0
  • 취소회신하다