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

PHP PDO escapa ponto de interrogação para que não pense que é um espaço reservado


PDO não se confunde com o ponto de interrogação entre aspas. Acabei de testar isso com PHP 5.5.15.
$sql = "SELECT CONCAT('path/to/page/?id=', id) AS link FROM foo WHERE name = ?;";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(1, 'name');
$stmt->execute();
print_r($stmt->fetchAll());

Funciona bem, sem erro sobre um número errado de parâmetros. Seu erro é causado pela forma como você está vinculando parâmetros, não pela sintaxe SQL.

Eu suspeito que você não nos mostrou toda a consulta SQL, porque WHERE sem FROM é um erro de sintaxe de qualquer maneira. Portanto, você deve ter espaços reservados de parâmetros adicionais que não nos mostrou. Também seria útil se você nos mostrasse como está vinculando parâmetros (ou passando parâmetros para execute()).