为什么PDO不会绑定我的参数?

时间:2014-09-24 11:02:01

标签: php pdo parameters bind defined

我有一些查询,其中包含一些与PDO绑定的参数。这是我的代码:

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

但它不起作用。我有这个错误:

  

警告:PDOStatement :: execute():SQLSTATE [HY093]:参数号无效:参数未在 C:\ Users \ mydoc \ Documents \ pjct \ web_gomme_new \ class中定义\ class.Pneumatico.php 116

有什么问题?我打印了绑定函数中使用的两个变量,它们具有正确的值。

2 个答案:

答案 0 :(得分:1)

我无法确定这是否是问题,但您的查询中存在错误。 (缺少空间)。

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

见后面的括号:larghezza。

您的查询将最终成为" ..和larghezza_pneumatici =:larghezzaGROUP BY altezza_pneumatici ..."。

答案 1 :(得分:0)

您无需拆分SQL查询字符串。

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

很好。每行末尾的空格。这应该可以解决问题。