Search code examples
phppdoparametersbinddefined

Why PDO does not bind my params?


I have a query with some parameters that I bind with PDO. This is my code:

$sql = "SELECT altezza_pneumatici FROM tbl_catalogo_pneumatici "
     . "WHERE sigla_produttore = :marca "
     . "AND larghezza_pneumatici = :larghezza"
     . "GROUP BY altezza_pneumatici "
     . "ORDER BY altezza_pneumatici ASC";

$query = $DBobj->dbConn->prepare($sql);
$query->bindValue(':marca', $marca, PDO::PARAM_STR);
$query->bindValue(':larghezza', $larghezza, PDO::PARAM_STR);
$query->execute();

But it does not work. I have this error:

Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\Users\mydoc\Documents\pjct\web_gomme_new\class\class.Pneumatico.php on line 116

What is the problem? I printed both variables used in binding function, and they have correct values.


Solution

  • I can not say for sure if this is the problem, but there is an error in your query. (missing space).

    $sql    = "SELECT altezza_pneumatici FROM tbl_catalogo_pneumatici "
            . "WHERE sigla_produttore = :marca "
            . "AND larghezza_pneumatici = :larghezza[ ]"
            . "GROUP BY altezza_pneumatici "
            . "ORDER BY altezza_pneumatici ASC";
    

    See the brackets behind :larghezza.

    Your query will end up being "..AND larghezza_pneumatici = :larghezzaGROUP BY altezza_pneumatici...".