if(!$this->MakeProcedure("StupidProcedure", "OUT msg VARCHAR(25)" )){
echo "could not create procedure";
}
if(!$this->db->query("SET @msg = ''") || !$this->db->query("CALL StupidProcedure(@msg)")){
echo "CALL to StupidProcedure failed:";
} else {
$res= $this->db->query("SELECT @msg as _p_out");
$row = $res->fetch();
echo $row['_p_out']." counted columns ";
}
我在 mysql DB 中有表authors 和publishers。他们都有 ISBN 共有列。然后我(通过 php)向存储过程发出调用 其中包含以下代码:
BEGIN
DECLARE count int;
SELECT count (*) FROM
(
SELECT distinct
table_name
FROM information_schema.columns
WHERE table_name IN ('authors', ‘publishers’)
AND column_name = 'ISBN'
and table_schema = 'myDB'
)any_alias
INTO count;
SELECT count INTO msg; /*just to debug counter*/
END
基本上,我希望上面的代码片段返回 2 作为表的计数 具有共同的 ISBN 列(以反射(reflect)在计数变量中)。很遗憾, 尽管有多个,但计数始终返回 0 - 检查 ISBN 列是否为 那里(使用 phpmyadmin)。为什么 count(*) 表现奇怪?或者在那里 我必须设置一个特殊的 .ini 配置?
这是我的测试驱动程序:
任何帮助将不胜感激。
最佳答案
哇哦!终于我明白了。下面是执行脏修复的 sql 代码片段:
BEGIN
DECLARE count int;
SELECT count(1)
FROM information_schema.columns
WHERE table_name IN ('authors', 'publishers')
AND column_name = 'ISBN'
AND table_schema = 'test'
INTO count;
SELECT count INTO msg; /*just to debug counter*/
END
//PRINT ‘Thank you guys !’
关于php - Mysql count(*) 让我失望,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30810526/