Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQLSTATE[HY093]:Número de parâmetro inválido:o número de variáveis ​​vinculadas não corresponde ao número de tokens na linha 102


Você não ligou todas as suas ligações aqui
$sql = "SELECT SQL_CALC_FOUND_ROWS *, UNIX_TIMESTAMP(publicationDate) AS publicationDate     FROM comments WHERE articleid = :art 
ORDER BY " . mysqli_escape_string($order) . " LIMIT :numRows";

$st = $conn->prepare( $sql );
$st->bindValue( ":art", $art, PDO::PARAM_INT );

Você declarou uma vinculação chamada :numRows, mas nunca vincula nada a ela.

ATUALIZAÇÃO 2019:continuo recebendo votos positivos sobre isso e isso me lembrou de outra sugestão

Aspas duplas são interpolação de strings em PHP, então se você for usar variáveis ​​em uma string de aspas duplas, não faz sentido usar o operador concat. Por outro lado, aspas simples não são interpolação de strings, portanto, se você tiver apenas uma variável no final de uma string, pode fazer sentido ou apenas usá-la para a string inteira.

Na verdade, há um micro op disponível aqui, pois o interpretador não se preocupa em analisar a string em busca de variáveis. O impulso é quase imperceptível e totalmente ignorável em pequena escala. No entanto, em um aplicativo muito grande, especialmente bons monólitos antigos, pode haver um aumento notável no desempenho se as strings forem usadas assim. (e IMO, é mais fácil de ler de qualquer maneira)