使用PHP PDO在数据库中尝试简单搜索term。返回的错误意味着PDO
无法确定参数类型。我在绑定它时显式地将其指定为STR
,并在查询字符串中将其转换为varchar。在没有CAST的情况下,查询在MySQL中工作正常。
// Get course retry limit from database
$query = $this->db_connection->prepare("
SELECT column FROM datbase.table
WHERE
column LIKE CAST(CONCAT('%', :search_term, '%') as varchar)
GROUP BY column"
);
$query->bindValue(':search_term', $search_term, PDO::PARAM_STR);
$query->execute();
Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: :search_term
如果像在直接查询调用中那样,使用单引号显式转义查询中的字符串,则会出现另一个错误:
Fatal error: Uncaught PDOException: SQLSTATE[42P18]: Indeterminate datatype: 7 ERROR: could not determine data type of parameter $1
1条答案
按热度按时间w8f9ii691#
我把里面的CAST直接移到了参数中,解决了这个问题。不知道为什么需要它,因为PHP变量是一个被编码为大写的字符串。
下面是正确的查询: