recherche

Maison  >  Questions et réponses  >  le corps du texte

SQLSTATE : nombre d'arguments non valide : le nombre de variables de liaison ne correspond pas au nombre de jetons, ligne 102

<p>J'ai reçu l'erreur SQLSTATE[HY093] : Le nombre de variables de liaison ne correspond pas au nombre de jetons, en dessous de la ligne 102 de comments.php : </p> <pre class="brush:php;toolbar:false;"><?php /*** Classe de traitement des articles*/ Commentaire de classe { // Les attributs /*** @var int ID d'article dans la base de données*/ public $id = nul ; /*** @var int La date à laquelle l'article sera/a été publié*/ public $publicationDate = null ; /*** @var string Le titre complet de l'article*/ public $titre = nul ; /*** @var string Contenu HTML de l'article*/ public $contenu = nul ; /*** @var int ID d'article dans la base de données*/ public $idarticle = null ; /*** Définissez les propriétés de l'objet en utilisant les valeurs du tableau fourni * * Valeur de l'attribut @param assoc*/ fonction publique __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['titre'] ); if ( isset( $data['content'] ) ) $this->content = $data['content']; if ( isset( $data['articleid'] ) ) $this->articleid = (int) $data['articleid']; } /*** Définissez les propriétés de l'objet en utilisant la valeur POST du formulaire d'édition * * @param valeur POST du formulaire associé*/ fonction publique storeFormValues( $params ) { // stocke tous les paramètres $this->__construct( $params ); // Analyse et stocke la date de sortie if ( isset($params['publicationDate']) ) { $publicationDate = exploser ( '-', $params['publicationDate'] ); si ( count($publicationDate) == 3 ) { liste ( $y, $m, $d ) = $publicationDate ; $this->publicationDate = mktime (0, 0, 0, $m, $d, $y); } } } fonction statique publique getById( $id ) { $conn = nouveau PDO (DB_DSN, DB_USERNAME, DB_PASSWORD ); $sql = "SELECT *, UNIX_TIMESTAMP(publicationDate) AS publicationDate FROM commentaires WHERE id = :id"; $st = $conn->prepare( $sql ); $st->bindValue( ":id", $id, PDO::PARAM_INT ); $st->exécuter(); $row = $st->fetch(); $conn = nul ; if ( $row ) renvoie un nouveau commentaire ( $row ); }/*** Renvoie tous (ou une certaine plage d') objets d'article dans la base de données * * @param int facultatif Nombre de lignes à renvoyer (la valeur par défaut est toutes) * @param string colonne facultative selon laquelle les articles sont triés (la valeur par défaut est "publicationDate DESC") * @return Array|false Un tableau contenant deux éléments : results => array, une liste d'objets article totalRows => nombre total d'articles ;*/ fonction statique publique getList( $art=1, $order="publicationDate DESC", $numRows=10000 ) { $conn = nouveau PDO (DB_DSN, DB_USERNAME, DB_PASSWORD ); $sql = "SELECT SQL_CALC_FOUND_ROWS *, UNIX_TIMESTAMP(publicationDate) AS publicationDate FROM commentaires WHERE articleid = :art ORDER BY " . mysql_escape_string($order) . " LIMIT :numRows"; $st = $conn->prepare( $sql ); $st->bindValue( ":art", $art, PDO::PARAM_INT ); $st->exécuter(); $liste = tableau(); while ( $row = $st->fetch() ) { $comments = nouveau commentaire( $row ); $liste[] = $commentaire ; } } /*** Insérez l'objet article actuel dans la base de données et définissez son attribut ID.*/ fonction publique insert() { // 插入文章 $conn = nouveau PDO (DB_DSN, DB_USERNAME, DB_PASSWORD ); $sql = "INSERT INTO comments ( publicationDate, title, content, articledid ) VALUES ( FROM_UNIXTIME(:publicationDate), :title, :content, :articleid )"; $st = $conn-> préparer ( $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->exécuter(); $this->id = $conn->lastInsertId(); $conn = nul ; } /** * 在数据库中更新当前的文章对象。*/ mise à jour de la fonction publique() { // 更新文章 $conn = nouveau PDO (DB_DSN, DB_USERNAME, DB_PASSWORD ); $sql = "MISE À JOUR des commentaires SET publicationDate=FROM_UNIXTIME(:publicationDate), title=:title, summary=:summary, content=:content, articleid=:articleid,imageExtension=:imageExtension WHERE id = :id"; $st = $conn-> préparer ( $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->exécuter(); $conn = nul ; } /*** Supprimez l'objet article actuel de la base de données.*/ fonction publique supprimer() { // 删除文章 $conn = nouveau 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->exécuter(); $conn = nul ; } } ?>≪/pré> <p><br /></p>
P粉386318086P粉386318086493 Il y a quelques jours507

répondre à tous(1)je répondrai

  • P粉724256860

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

    Vous n'avez pas relié toutes les reliures ici

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

    Vous avez déclaré une liaison appelée :numRows, mais vous n'y avez rien lié.

    répondre
    0
  • Annulerrépondre