【发布时间】:2015-11-28 07:27:55
【问题描述】:
我在准备好的语句中有以下查询:
SELECT
cid, cname, cemail, count_client_locations(cid) AS loc_cnt
FROM
clients
WHERE isactive = 1 ORDER BY cname ASC
我在服务器count_client_locations 上有一个存储函数。函数的查询部分如下所示:
RETURN (SELECT COUNT(lid) FROM locations WHERE linked_client = cid);
当我在 MySQL Workbench 中运行 SQL 时,它会返回所需的结果:
cid | cname | cemail | loc_cnt
------------------------------------------------
2 | Acme Inc | fred@example.com | 3
1 | Example Ind | alice@example.com | 5
3 | Foobar Inc | joe@example.com | 0
1 | Barfoo Ltd | hello@example.com | 1
当我通过 PHP mysqli 准备语句运行它时,它无法准备它 (Fatal error: Call to a member function execute() on a non-object)。如果我取消对函数的调用,它工作正常。
编辑 PHP 代码:
$sql = $conn->prepare("SELECT cid, cname, cemail, count_client_locations(cid) AS loc_cnt FROM clients WHERE isactive = 1 ORDER BY cname ASC");
$sql->execute();
那么为什么这个查询可以在 MySQL 工作台中工作,而不是在 PHP 代码中,我可以做些什么来修复它?
【问题讨论】:
-
@Drew - 我不确定我是否遵循您的意思。我搞错了什么?查询?
-
没有什么真正的革命性
-
那么你的 php 代码在哪里?
-
您的
prepare()似乎失败了。您的网络服务器的 error.log 说明了什么?另外,$conn->error的内容可能很有启发性。
标签: php mysql mysqli stored-functions