2014-09-24 4 views
0

У меня есть запрос с некоторыми параметрами, которые я связываю с PDO. Это мой код:Почему 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(); 

Но это не работает. У меня есть эта ошибка:

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

В чем проблема? Я напечатал обе переменные, используемые в функции привязки, и они имеют правильные значения.

ответ

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.

Ваш запрос будет «..AND larghezza_pneumatici =: larghezzaGROUP BY altezza_pneumatici ...».

+0

Вау, я не могу поверить, что совершил эту ошибку! : D Спасибо, это была моя проблема. – sadrac

+0

NP :) Это случается. Примите ответ, нажав на галочку рядом с ним. Stackoverflow любит «отвечать» на вопросы. (в противном случае это будет считаться неотвеченным навсегда) –

+0

Выполнено. Еще спасибо! : D – sadrac

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

Прекрасно. Пробел в конце каждой строки. Это должно сделать трюк.

+0

Фактически его текущий метод соответствует хорошо используемым соглашениям об именах. То есть. Соглашение об именах Zend: http://framework.zend.com/wiki/display/ZFDEV2/Coding+Standards (поиск «Конкатенация строк») –