Autor Zpráva
qteck
Profil
Ahoj,

    function getComments($arrays, $offset)
    {
        $sql = 'SELECT * FROM comments LEFT JOIN users ON users.fb_id = comments.author WHERE comments.article_id = :id ORDER BY comments.id DESC LIMIT :offset, 5';
       
        $stmt = $this->db->pdo->prepare($sql);  
        $stmt->bindParam(':offset', $offset, \PDO::PARAM_INT);
        
        $stmt->execute($arrays);
        
        return $stmt->fetchAll(\PDO::FETCH_ASSOC);
    }

snažím se vytvořit stránkování. Tento kód mi vrací dvě chyby:



PHP Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in .../evelinkars/model/article.php:28



PHP Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number in .../evelinkars/model/article.php:28

Zjistil jsem že to způsobuje :offset když jí nahradím číslem tak to šlape. Dočetl jsem se že se musí definovat typ a tak proto ten bind Param.

Nevíte v čem to může vězet?

Díky.
tiso
Profil
Chýba ti tam niečo ako: $stmt->bindParam(':id', $id, \PDO::PARAM_INT);
Čo je obsahom premennej $arrays ?
qteck
Profil
to právě prochází přes execute.

spíš bych se obával zda lze tyto dvě metody předávání kombinovat

$comments = $article->getComments(array(':id' => $content['articles_id']), $olderComments);
tiso
Profil
qteck: tak ich vyskúšaj nekombinovať. Pozri na príklady na http://php.net/manual/en/pdostatement.execute.php
qteck
Profil
   function getComments($arrays)
    {
        $sql = 'SELECT * FROM comments LEFT JOIN users ON users.fb_id = comments.author WHERE comments.article_id = :id ORDER BY comments.id DESC LIMIT :offset, 0';
       
        $stmt = $this->db->pdo->prepare($sql);  
       
        foreach($arrays as $key => $val)
        {
            $stmt->bindParam($key, $val, \PDO::PARAM_INT);
        }
        
        
        $stmt->execute();
        
        return $stmt->fetchAll(\PDO::FETCH_ASSOC);
    }



no to nenítak jendoduchý, u tohodle ano,ale mám pole kde předávám hromady dalších polí a jsou zmixovaný.


PHP Warning: PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''5'' at line 1 in

e3lape


PDOStatement #9fca
queryString => "SELECT * FROM comments LEFT JOIN users ON users.fb_id = comments.author WHERE comments.article_id = :id ORDER BY comments.id DESC LIMIT :bub" (140)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: