【发布时间】:2018-12-28 02:10:50
【问题描述】:
准备要在我的数据库上查询的简单语句时出现错误。这是一个很简单的。据称功能max()不存在。这是简单的查询:
SELECT coalesce ( max ( p_order ), 0 ) + 1 AS new FROM pages
它没有要绑定的参数(但我使用自己的类来管理我的查询,因此总是使用准备好的语句)。
在准备语句时,我从数据库中收到以下错误:“FUNCTION fa_cms.max 不存在。请检查参考手册中的“函数名称解析和解析”部分”。密码是 1630。
我可以直接在数据库 (MariaDB 10.1.29) 上执行此查询,没有任何问题 - 并得到“1”,因为表仍然是空的。
但是当我通过我自己的 PHP 类调用这个语句时,我得到了这个错误。所有其他语句的准备和执行都没有任何问题 - 有或没有参数。
max() 聚合函数有什么特别之处吗?
【问题讨论】:
-
去掉
max和(之间的空格。 -
dev.mysql.com/doc/refman/8.0/en/…
new是关键字。 -
@MartinZeitler 不,不是。这是一个关键字,但不是保留的。后面没有
(R)。 -
@Barmar 当仅绑定语句失败时,它仍然可能是列名,这可能需要反引号
`new`- 甚至是正确的名称。 -
如果它需要反引号,它将一直需要它们,而不仅仅是在绑定时。我的猜测是,他手动运行查询时使用的间距与将查询放入 PHP 时不同。
标签: php mysqli prepared-statement